Я пытаюсь автоматизировать вход в систему с Tesco; Я хочу избежать использования селена.
Я вижу, что пост формы происходит с именем пользователя, pw, _csrf и некоторым токеном состояния. Я думаю, что они исходят из запроса GET, выполняемого непосредственно перед ним, но когда я публикую данные с данными, я получаю сообщение об отклонении браузера, поэтому я думаю, что некоторые заголовки отключены.
import requests
session = requests.Session()
jar = requests.cookies.RequestsCookieJar()
login_url = "https://secure.tesco.com/account/en-GB/login?from=/"
email = ""
pw = ""
loginheaders= {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36',
'Upgrade-Insecure-Requests': '1',
'Host': 'secure.tesco.com',
'accept': 'text/html,application/xhtml+xml,application/xml',
'Origin': 'https://secure.tesco.com'
}
with requests.session() as s:
first = s.get("https://www.tesco.com/", headers=login_headers)
print(first.cookies)
res = s.get(login_url, headers=login_headers)
cs = res.cookies['_csrf']
atrc = res.cookies['atrc']
payload = {
'username': email,
'password': pw,
'state': atrc,
'_csrf': cs
}
print(payload)
response = s.post(login_url, data=payload, headers=login_headers)
print(response)
Но я получаю такой ответ:
Упс ... Похоже, что-то не так \ n \ t \ t \ t
Если вы видите эта страница, потому что ваш браузер не прошел некоторые проверки безопасности
Как я могу улучшить свой запрос?