Python Requests - Ответ не в правильной кодировке - PullRequest
0 голосов
/ 31 марта 2019

Я делаю запрос на вход в систему, однако, хотя вход выполнен успешно, ответ закодирован.При использовании response.content выглядит как base64:

\x13h(\xa6\xe4-!\xea\xa4\xa3m\x1dT\x8e}\x94\\\x16\xce5`\x90\xa5\xa3\x92a\x90\xc7\xb2\x8dG\xab3H\xfc2,\xd4x\xe4\xf1I\xf2\x89A\xad\xaeJ\xa4\xdeu\x84\xce\x14\x86,vB\xdd\xb4\x84\xf2\xdc{N.\x8d\xf0Rk@\xda\n\xe2\x88\xb5\xde\xb2\xed\x9b8sM6\x12l\xc8\x8b}\xae\xcd\x99\xb2\xd1\x08a\x0eF\xf1\x8e\xdcp\xf3\x10%U\xb5\xd15\xaf&\\F\xe0\x84iQ\x8ae2\xd6\xba\xb3\xc2\xc45\xb2L\x1e\x9ag\x835\xea\xd8\x9e3Y9\x17\x82=,[\xf0\x80rd7\xcb2\x08\xc1\x02\x06i\xb9\xb9\xab\n\xb0\x8a\'\xfc\xdcK\xf5\xf0\xff

Однако при декодировании это недопустимо.В Firefox он выглядит как строка json: Ответ JSON в Firefox

И с помощью response.text он возвращает нечитаемую ерунду:

��}���p�~�Ns�=�9�q��"���SS%�+�<��M��4��}1�

Мне нужен ответ Pythonчтобы выглядеть так, как в ответе firefox Я пытался просмотреть заголовки ответа для кодирования, ничего не было.

Вот мой код запроса:

import cfscrape
import json
import requests
s = requests.Session()
scraper = cfscrape.create_scraper(sess=s)  # returns a CloudflareScraper instance
# Or: scraper = cfscrape.CloudflareScraper()  # CloudflareScraper inherits from requests.Session
headers = {"Host": "www.runebet.com",
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; rv:66.0) Gecko/20100101 Firefox/66.0",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5",
"Accept-Encoding": "gzip, deflate, br",
"Connection": "keep-alive",
"Upgrade-Insecure-Requests": "1",
"TE": "Trailers"}
data = '{"form":{"accept_tos":true,"aid":"493895","game_mode":"rs3","username":"gtgg3wfwfo","password":"gggggg1!!","password_confirmation":"gggggg1!!"},"fp":"","ref":""}'
r = scraper.post("https://www.runebet.com/api/auth/register", headers=headers, data=data)
print(r.content)
r = requests.utils.dict_from_cookiejar(scraper.cookies)
print(r["cf_clearance"])
headers["Cookie"] = "cf_clearance=" + r['cf_clearance'] + ""
headers["Content-Type"]  = "application/json;charset=utf-8"
headers["X-Requested-With"] = "XMLHttpRequest"
headers["Referer"] = "https://www.runebet.com/login"
headers["Accept"] = "application/json, text/plain, */*"

#print(headers)
s = requests.Session()
data = '{"username":"gtgg3wfwfo","password":"gggggg1!!","recaptcha":"BAD","fp":"7ec5779306942b38559d73723988f5c7"}'
r = s.post("https://runebet.com/api/token-login", data=data, headers=headers)
r.encoding = 'br'
print(r.text)

data='{"amount":2500,"source":"poker"}'
r = s.post("https://www.runebet.com/api/poker/transfer", data=data, headers=headers)
r.encoding = 'br'
print(r.text)
#print(bytearray.fromhex(r.text).decode())
#print(r.text.decode('utf-8'))

Любая помощь в расшифровке ответов?

Примечание: настройка r.encoding = "utf-8" по-прежнему возвращает странные символы, показанные выше.

Примечание: настройка r.encoding = None делает то же самое

Заголовки ответа в Python:

{'Date': 'Sun, 31 Mar 2019 13:39:00 GMT', 'Content-Type': 'application/json', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Set-Cookie': '__cfduid=df9ec0142c171b8601e97a3045d4dc5ca1554039538; expires=Mon, 30-Mar-20 13:38:58 GMT; path=/; domain=.runebet.com; HttpOnly; Secure', 'Vary': 'Accept-Encoding', 'Cache-Control': 'no-cache, private', 'X-RateLimit-Limit': '10', 'X-RateLimit-Remaining': '8', 'X-Frame-Options': 'SAMEORIGIN', 'X-XSS-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains; preload', 'Expect-CT': 'max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"', 'Server': 'cloudflare', 'CF-RAY': '4c02ba0d5807977a-FRA', 'Content-Encoding': 'br'}
...