Вход на сайт через Python

для университетского проекта, в котором я сейчас пытаюсь войти на сайт, и отбросить небольшую деталь (список новостей) из моего профиля пользователя.

Я новичок в Python, но я сделал это раньше на другом сайте. Мои первые два подхода обеспечивают разные ошибки HTTP. Я рассмотрел проблемы с заголовком, который отправляет мой запрос, однако мое понимание этого процесса входа в сайты кажется недостаточным.

Это страница входа в систему: http://seekingalpha.com/account/login

Мой первый подход выглядит так:

import requests with requests.Session() as c: requestUrl ='http://seekingalpha.com/account/orthodox_login' USERNAME = 'XXX' PASSWORD = 'XXX' userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36' login_data = { "slugs[]":None, "rt":None, "user[url_source]":None, "user[location_source]":"orthodox_login", "user[email]":USERNAME, "user[password]":PASSWORD } c.post(requestUrl, data=login_data, headers = {"referer": "http://seekingalpha.com/account/login", 'user-agent': userAgent}) page = c.get("http://seekingalpha.com/account/email_preferences") print(page.content) 

Это приводит к «Запрещению 403»

Мой второй подход выглядит так:

 from requests import Request, Session requestUrl ='http://seekingalpha.com/account/orthodox_login' USERNAME = 'XXX' PASSWORD = 'XXX' userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36' # c.get(requestUrl) login_data = { "slugs[]":None, "rt":None, "user[url_source]":None, "user[location_source]":"orthodox_login", "user[email]":USERNAME, "user[password]":PASSWORD } headers = { "accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8", "Accept-Language":"de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4", "origin":"http://seekingalpha.com", "referer":"http://seekingalpha.com/account/login", "Cache-Control":"max-age=0", "Upgrade-Insecure-Requests":1, "user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36" } s = Session() req = Request('POST', requestUrl, data=login_data, headers=headers) prepped = s.prepare_request(req) prepped.body ="slugs%5B%5D=&rt=&user%5Burl_source%5D=&user%5Blocation_source%5D=orthodox_login&user%5Bemail%5D=XXX%40XXX.com&user%5Bpassword%5D=XXX" resp = s.send(prepped) print(resp.status_code) 

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

У кого-то есть идея, что пошло не так? Наверное, много.

One Solution collect form web for “Вход на сайт через Python”

Вместо того, чтобы тратить много энергии на ручное вход в систему и игру с сеансом, я предлагаю вам сразу очистить страницы, используя ваш файл cookie.

Когда вы входите в систему, обычно в ваш запрос добавляется файл cookie для идентификации вашей личности. Пожалуйста, смотрите это, например:

Мой файл cookie

Ваш код будет выглядеть так:

 import requests response = requests.get("www.example.com", cookies={ "c_user":"my_cookie_part", "xs":"my_other_cookie_part" }) print response.content 
  • Как найти определенный атрибут данных из тега html в BeautifulSoup4?
  • Список, не разрешающий .splitlines () - Python
  • селен не выполняет итерацию по элементам
  • Ошибка HTTP 999: запрос отклонен
  • шаблон regex в python для анализа тегов заголовков HTML
  • веб-соскабливание динамического содержимого с помощью python
  • Общий отказ сервера SOCKS при переключении с использованием стебля
  • Как обрабатывать IncompleteRead: в python
  • Использование модуля запросов Python для отправки формы без имени ввода
  • Как перебирать страницы с несколькими результатами, когда веб-соскабливание с помощью Beautiful Soup
  • Python Красивый суп, как JSON декодировать `dict`?
  • Python - лучший язык программирования в мире.