Авторизация на сайте через питон

По материалам статьи: Python requests. Авторизация на сайте

Я описал как парсить сайты через модуль requests. Бывают случаи когда для части сайта нужна авторизация, то есть логин и пароль.

Для авторизации нужно поддерживать активную сессию в модуле requests, через session.get()

session.get(url) вместо requests.get(url)
import requests
import re
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://freelance.ru/login/'

# Важно. По умолчанию requests отправляет вот такой 
# заголовок 'User-Agent': 'python-requests/2.22.0 ,  а это приводит к тому , что Nginx
# отправляет 404 ответ. Поэтому нам нужно сообщить серверу, что запрос идет от браузера  

user_agent_val = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'

# Создаем сессию и указываем ему наш user-agent
session = requests.Session()
r = session.get(url, headers = {
    'User-Agent': user_agent_val
})

# Указываем referer. Иногда , если не указать , то приводит к ошибкам. 
session.headers.update({'Referer':url})

В оригинальной статье было снимание куков, я не совсем понимаю когда использовать. В данном скрипе, я это не использую.

_xsrf = session.cookies.get('_xsrf', domain=".freelance.ru")

Дальше посылаем post-запрос

login = "xxxx"
passwd = "xxxx"

post_request = session.post(url, {
    'login': login ,
    'passwd': passwd,
    "check_ip": "on",
    "submit": "%C2%F5%EE%E4",
    "auth": "auth",
    "return_url": "/login/"
})

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

В submit я подставил значение из не декодированного вида.

Теперь переходим в закрытый раздел, обновляем сессию и снимаем данные

url = "https://freelance.ru/setup/"
r = session.get(url)
soup = BeautifulSoup(r.text, "lxml")
soup
Мой рейтинг на этом сервисе.

Дальше можно снимать нужную информацию, используя BeautifulSoup

Для библиотеки Requests, есть хорошие статьи от Александра, pythonru

Краткое руководство по библиотеке Python Requests — рассказывает кратко, как пользоваться библиотекой.

Продвинутое руководство по библиотеке Python Requests — дополнительная информация, по объектам session, сертификатам SSL, прокси.

Отправить
Поделиться
Твитнуть
Запинить

Считаю метрики, делаю сквозную аналитику и когортный анализ, составляю интерактивные дешборды, моделирую юнит-экономику


Обратиться с задачей