Войти на сайт с помощью модуля Python and Requests?
Я пишу веб-скребок AliExpress, используя Python и модуль Requests, вместе с BeautifulSoup, и у меня все получилось, но я столкнулся с проблемой - меня случайно перенаправили на страницу входа. Мое решение для этого состоит в том, чтобы просто войти в начале моего сеанса до очистки, но я не знаю, как войти.
Страница входа ( https://login.aliexpress.com/) требует только имя пользователя и пароль, но когда я пытаюсь ввести их со своим кодом и проверить, авторизован ли я, перейдя по https://home.aliexpress.com/index.htm и, глядя на HTML, не удается, так как перенаправляет меня обратно на страницу входа.
Мой код после попытки нескольких решений безрезультатно:
import requests
LOGIN_URL = "https://login.aliexpress.com/"
LOGIN_INFO = {
"loginId": "myemail@email.com",
"password": "mypassword"
}
with requests.Session() as sess:
#go to login page
sess.get(LOGIN_URL)
#attempt to log in with my login info
sess.post(LOGIN_URL, data=LOGIN_INFO)
#go to 'My AliExpress' page to verify successful login
success = sess.get("https://home.aliexpress.com/index.htm")
#manually check html to see if I was sent to the login page again
print(success.text)
Это в значительной степени то, что осталось после многих моих неудачных попыток. Вот некоторые из вещей, которые я пробовал:
Глядя на файл cookie после "sess.get(LOGIN_URL)", он возвращает это, но я не знаю, что с ним делать (в формате ключ: значение):
- ali_apache_tracktmp:
- ali_apache_track:
- xman_f: t52Eyo + p3qf6E6fdmL5yJ81g2icRn + 2PYjjrWYHlqlDyXAixo92Z5KHMZV8SCV7vP4ZjxEmuTQesVWkqxUi3SpFU1qbRyNRV = 2RVD0RVD0RVD0RVD0R1R0D0R1R0D0R1D6R4
- JSESSIONID: 30678741D7473C80BEB85825718FB1C6
- acs_usuc_t: acs_rt = 343aef98b0ca4ae79497e31b11c82c29 & x_csrf = 1b5g78e7fz2rt
- xman_us_f: x_l = 0
- ali_apache_id: 23.76.146.14.1510893827939.187695.4
- xman_t: PSIYMbKN2UyuejZBfmP9o5hdmQGoSB0UL0785LnRBxW0bdbdMmtW2A47hHbgTgD7TmFp7QVsOW4kXTsXMncy + iKisKfqagqbwyPxOVF =
Попытался найти токен csrf и нашел только текст после '_csrf=' в 5-м пункте выше. Пробовал использовать его, и это не сработало.
Посмотрел html-форму, отправляемую при входе в систему, но я не знаю html и могу только распознать, что в ней гораздо больше полей, чем те, которые я видел, что другие люди используют для других веб-сайтов (изображение данных формы из Chrome здесь).
Изменив "myPassword" в моем коде на текст в поле password2 на изображении выше и изменив ключ "password" на "password2".
Погуглил несколько часов, но не нашел ничего, что сработало бы.
На данный момент, я в своем уме, поэтому любая помощь в том, как поступить, будет очень признательна. Я не лучший программист (все еще учусь), не знаю html за пределами того, что я узнал из нескольких уроков о чистке, и надеялся сам разобраться, но несколько часов спустя я все еще не решил это и понял, что действительно могу воспользоваться помощью.
Я использую Python 3.5. Если потребуется дополнительная информация, дайте мне знать. Мозг почти полностью превращается в кашу после того, как застрял и проснулся так долго.
0 ответов
У меня есть подозрение, что это не сработает так, как вы хотите. Даже после того, как каким-то образом выполнено приглашение на вход, на следующей странице представлена "проверка ползунка", с которой, насколько мне известно, запросы ничего не могут сделать. (Если есть способ, дайте мне знать).
Вместо этого я пытался использовать файлы cookie:
session = requests.Session()
cj = requests.cookies.RequestsCookieJar()
cj.set('KEY', 'VALUE')
session.cookies = cj
response = session.get(url, timeout=5, headers=headers, proxies=proxies)
Раньше парсер какое-то время работал с заголовками и прокси, но в последнее время всегда запрашивает логин. Я пробовал все ключи и значения в файлах cookie, но безрезультатно.
Идея заключалась бы в том, чтобы использовать селен для входа в систему и захвата файлов cookie, а затем передать его сеансу запросов.
AntoG есть решение для этого: /questions/43755130/python-zaprosyi-selenium-prohozhdenie-kuki-pri-vhode/43755136#43755136