问题出现在 auto.ru 上的个人帐户中的授权
最终任务是收集一段时间内的广告统计信息。
当只有一个账户时,一切都通过VBA解决,通过IE在auto.ru上授权
但是现在有几个帐户,我想自动化授权过程。整个授权过程由 ajax 脚本覆盖。为了通过这些脚本进行授权,我使用了 selenium-webdriver Firefox():
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver import Firefox
from selenium.webdriver.common.keys import Keys
if __name__ == '__main__':
drv = Firefox()
drv.get('https://auth.auto.ru/login/')
try_count = 0
"""Авторизация через ajax скрипт"""
while try_count < 10: # Здесь ИНОГДА всплывает кнопка, которую нужно нажать что-бы продолжить
try:
try_count += 1
btn = drv.find_element('xpath', '//*[@id="confirm-button"]')
btn.click()
break
except NoSuchElementException:
try_count += 1
continue
while True:
try:
login = drv.find_element('xpath', '/html/body/div/div/div/div/form/div/div[2]/span/label/div/span/input')
login.send_keys('**********', Keys.RETURN)
break
except NoSuchElementException:
continue
while True:
try:
password = drv.find_element('xpath', '/html/body/div/div/div/div/form/div/div[3]/span/label/div/span/input')
password.send_keys('************', Keys.RETURN)
break
except NoSuchElementException:
continue
它有效,我去我的个人帐户。
然后不知何故,您需要将会话转移到 requests.session 以进行进一步的工作。在这里,据我了解,您需要将 cookie 传递给请求会话。
selenim 输出.get_cookies()如下所示:
[{'name': '_csrf_token', 'value': '62c6c12693832b221e370*****5744936e01c444d73d59', 'path': '/', 'domain': '.auto.ru', 'secure': False, 'httpOnly': False}, {'name': 'suid', 'value': '0c5da5698d907ef61f6ce776c0e95008.9109b8aa****b74b49d9f245095e466', 'path': '/', 'domain': '.auto.ru', 'secure': False, 'httpOnly': False, 'expiry': 1604906256}, {'name': 'autoru_sid', 'value': 'a%3Ag5dc7b990*********32k7nllupd2npo.*************%7C1573370256112.604800.7jv-tw07xW7EdH***********51chKUv11gqj-vE6nwlcLv*********fiY6VM_E', 'path': '/', 'domain': '.auto.ru', 'secure': True, 'httpOnly': True, 'expiry': 1574579856}, {'name': 'autoruuid', 'value': 'g5dc7b990205vek9m432k7nllupd2npo.*********************', 'path': '/', 'domain': '.auto.ru', 'secure': True, 'httpOnly': True, 'expiry': 1574579856}, {'name': '_ym_wasSynced', 'value': '%7B%22time%22%*******%2C%22params%22%3A%7B%22eu%22%3A0%7D%2C%22bkParams%22%3A%7B%7D%7D', 'path': '/', 'domain': '.auto.ru', 'secure': False, 'httpOnly': False, 'expiry': 1573473937}, {'name': '_ym_uid', 'value': '1573370258208414976', 'path': '/', 'domain': '.auto.ru', 'secure': False, 'httpOnly': False, 'expiry': 1604906257}, {'name': '_ym_d', 'value': '1573370258', 'path': '/', 'domain': '.auto.ru', 'secure': False, 'httpOnly': False, 'expiry': 1604906257}, {'name': '_ym_isad', 'value': '2', 'path': '/', 'domain': '.auto.ru', 'secure': False, 'httpOnly': False, 'expiry': 1573442258}, {'name': '_ym_visorc_22*******', 'value': 'b', 'path': '/', 'domain': '.auto.ru', 'secure': False, 'httpOnly': False, 'expiry': 1573372058}, {'name': 'X-Vertis-DC', 'value': 'sas', 'path': '/', 'domain': '.auto.ru', 'secure': False, 'httpOnly': False, 'expiry': 1573373858}]
我不知道如何正确处理它,以便我可以requests拿起它并继续会话。
我建议使用
requests.