Сбой проверки безопасности браузера при попытке войти в Tesco с Python запросами - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь автоматизировать вход в систему с 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

Если вы видите эта страница, потому что ваш браузер не прошел некоторые проверки безопасности

Как я могу улучшить свой запрос?

1 Ответ

0 голосов
/ 19 апреля 2020

Похоже, вы, вероятно, делаете то же самое, что и я :)

Если посмотреть на форму, там есть и другие скрытые поля, но их включение тоже не кажется исправлением.

Используйте отладчик браузера для просмотра реального успешного запроса на вход в систему, отправленного обратно на сервер, и убедитесь, что вы отправляете те же поля.

...