Продолжаю шаманить с Selenium и дошло дело до кук. И вот тут началось.
Задача, впихнуть куки не браузера на сайт, а свои… например на сайт yandex.ru/internet/ зайти под куками
coockie = {'yandexuid': '5702666281564305746'}
а вот в Selenium нужно написать
browser.add_cookie(coockie)
coockie = {'domain': 'yandex.ru', 'expiry': 4534445654, 'httpOnly': False, 'name': 'yandexuid', 'path': '/', 'secure': False, 'value': '5702666281564305746'}
Но это понятно, первый вопрос:
в словаре “expiry” что это? Что самое интересное, если зайти на сайт и сохранить куки, expiry будет типа флоат. А если отправить куки, то флоат не катит, нужны именно целые числа. Почему так, ХЗ.
Второй вопрос то же довольно интересный, вот код:
from selenium import webdriver coockie = {'domain': 'yandex.ru', 'expiry': 4534445654, 'httpOnly': False, 'name': 'yandexuid', 'path': '/', 'secure': False, 'value': '5702666281564305746'} browser = webdriver.Chrome() browser.get('https://yandex.ru/internet/') browser.add_cookie(i) print(browser.get_cookies())
Так вот, при таком коде, browser.get_cookies() возращает то, что отправил.
Но при этом открывается окошко браузера, с инфой у куках, и что интересное, пишет что ‘yandexuid’: ‘рандомное число, совсем не то что отправлял’
Долго я думал, как так может, одновременно, два разных значения кук.
Думал, может сначала объекту browser добавить куки, а потом уж только отправлять get запрос.
Нет, ругается.
Как оказалось, при случайном обновлении браузера, все стало на место. то есть сначало показывает рандомное число, обнавляешь в ручную, и начинает показывать сайт yandex.ru/internet/ то что нужно.
Странная штука.
Решил это так:
from selenium import webdriver coockie = [{'domain': 'yandex.ru', 'expiry': 4534445654, 'httpOnly': False, 'name': 'yandexuid', 'path': '/', 'secure': False, 'value': '5702666281564305746'}] browser = webdriver.Chrome() browser.get('https://mail.ru') browser.add_cookie(i) browser.get('https://yandex.ru/internet/') print(browser.get_cookies())
Но решение это не идеально. В определенных ситуациях не подойдет. Мож кто подскажет, другой вариант, и все таки что такое expiry, почему присылает флоат, а отправить можно только цельное число? Спасибо за внимание.