@abrcdns

Как спарсить сайт на Python с авторизацией через Steam?

Привет всем !

Недавно у меня возникла идея создать парсер баланса для одного сайта по обмену скинов в CS GO.
Я начал искать инфу и решил использовать для этого Python с библиотеками BeautifulSoup и requests.
В итоге я зашёл в тупик, так как сайт запрашивает авторизацию через Steam.
На сколько я понимаю, чтобы авторизироваться на сайте, нужно послать ему POST-запрос. Я авторизировался на этом сайте через Steam, и подглядел POST-запрос под названием "login", который он получает после моей авторизации. Попытался его повторить - безрезультатно. При попытке спарсить - сайт выдаёт версию для неавторизированного пользователя.
Мой код :
from bs4 import BeautifulSoup
import requests

s = requests.Session()

url = "https://old.cs.money/"

headers = {
    "Accept": "*/*",
    "user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Mobile Safari/537.36"
}

postData = {
    '_ga': '**************************************',
    'steamMachineAuth76561198135087873': '**************************************',
    'browserid': '**************************************',
    'recentlyVisitedAppHubs': '**************************************',
    'cookieSettings': '**************************************',
    'timezoneOffset': '**************************************',
    '_gid': '**************************************',
    'strInventoryLastContext': '**************************************',
    'sessionid': '**************************************',
    'steamCountry': '**************************************',
    'strResponsiveViewPrefs': '**************************************',
    'steamLoginSecure': '**************************************',
    'sessionidSecureOpenIDNonce': '**************************************'

}


responce = s.post(url, data=postData, headers=headers).text
test_resp = s.get(url, headers=headers).text

with open("index.html", "w", encoding='utf-8') as file:
    file.write(test_resp)

soup = BeautifulSoup(url, "lxml")
info = soup.find("span", id_="balance")
print(info)


Словарь postData это кукисы, которые передаёт post-запрос.
Я новичок в этом деле и только изучаю данное направление, возможно кто-то из вас мог бы подсказать мне советом или скинуть статьи\книги по этой теме? В интернете я не нашёл практически никакой информации о парсинге сайтов с авторизацией через сторонние сервисы. Буду благодарен любой помощи!
  • Вопрос задан
  • 934 просмотра
Решения вопроса 1
@Kadabrov
Логинишься, заходишь в инструменты для разработчика, нетворк
находите user_info
берете
url = 'https://old.cs.money/user_info'
и оттуда же куки и юсер-агент, упаковываете в словарь и отправляете get запрос, получаете json
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы