当前位置: 首页 > 知识库问答 >
问题:

Python如何解码超文本传输协议响应

宰父淳
2023-03-14

我正在使用下面的代码登录apiendpoint并从中检索数据,但响应似乎已编码,我无法读取内容。我正在使用request-requestes-0.0.1

import requests
import json
import os


http_proxy  = "http://192.168.10.20:8888"
https_proxy = "https://192.168.10.20:8888"

proxyDict = {
              "http"  : http_proxy,
              "https" : https_proxy,
            }
session = requests.Session()

payloadopt = 'user_id=tom&password=xxxxx'
s = session.post('https://login.milock.com/api/login',data=payloadopt, proxies=proxyDict, verify=False, headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:70.0) Gecko/20100101 Firefox/70.0', 'Accept':'application/json, text/plain, */*', 'Accept-Language':'en-US,en;q=0.5', 'Accept-Encoding':'gzip, deflate, br', 'Content-Type':'application/x-www-form-urlencoded'}, stream=True)

当我在控制台上打印相同的响应

▒▒7▒E`▒▒YD▒▒k▒샄▒q▒▒f,▒▒G▒(U▒Uv▒4ڍ▒߼w&▒▒!Ψ▒▒▒▒E5Q▒_▒▒{▒F▒▒<.▒▒▒▒4▒▒> p{▒k9▒▒֏9▒▒

有人能告诉我如何解码和读取响应中的数据吗

共有1个答案

司马弘益
2023-03-14

响应用brotli压缩编码。标准库不支持此压缩方法。您可以从pypi安装第三方软件包来解压它——有许多软件包可用。

举个例子

$ pip install brotli
>>> import brotli
>>> decompressed = brotli.decompress(response.content)
>>> dict_ = json.loads(decompressed)

如果您希望避免安装第三方模块,请从请求中的接受编码标头中删除'br'

'Accept-Encoding':'gzip, deflate, br' -> 'Accept-Encoding':'gzip, deflate'
 类似资料:
  • 我只是有一个关于服务中http请求的结构和处理响应的问题。我正在使用Angular2。alpha46 Typescript(刚刚开始测试-我喜欢它…Ps…。感谢所有一直致力于它并通过github作出贡献的人) 因此,采取以下措施: 登录表单。组成部分ts 从这个组件中,我导入了我的userService,它将容纳我的超文本传输协议请求,以登录用户。 使用者服务ts 我想做的是能够处理http请求之

  • 我的LogCat: 签名密钥(sw)为https://api.dropbox.com/1/shares/dropbox/a.jpg?oauth_consumer_key=2f2y1dyuqhp58ek 我对http没有太多经验。。 因为httpPost=新的httpPost(sw);工作正常,这是否意味着基本字符串签名正确? 还是我错过了什么?

  • 我想知道你对这个概念的看法/意见。如果有替代方案?这是否可行/有益? 据我所知,对于每个http请求,服务器都会执行一些操作并返回http响应。 现在考虑任何场景,我们希望对服务器上运行的进程有更多的控制。 情景1:http请求发送- 在这里,资源被浪费了。 情况2:http请求发送- 在这里,客户端不知道服务器中运行的进程的状态。客户端必须等待,直到它获得超文本传输协议响应。 我的想法是:在初始

  • 我有这个问题: 我需要从服务器下载一个zip文件,这个zip包含。xod和。巴布亚新几内亚。我正在使用AngularJS,JavaSpring,来克服跨域问题,我的htt。获取java spring控制器的角度调用,它将进行真正的get调用。我必须下载zip- 这是我的角度代码: 这是java spring代码: 这是控制台。日志: Object{data:"UEsDBBQACAAIAA5Ipkg

  • 我有一个由Python构建的API服务器。我需要一组客户端/计算机通过发出http post请求将数据发送到API服务器。 这里的数据实际上是html内容。(注意:我没有将合法数据转换为HTML/XML格式,数据本身就是我从web上收集的HTML),通常每页约200KB。我正试图通过使用串行/串行和压缩来尽可能减轻网络负载。 我正在考虑通过网络发送原始超文本标记语言。有没有类似序列化html对象的

  • 我正在使用GWT和Spring controller来管理http流量。有些请求可能需要很长时间,但我希望在超过给定时间时终止请求。 我如何配置超时Spring。我也使用Apache Tomcat 7.0。我试图在tomcat上inrease最大线程,但有一段时间tomcat工作缓慢,因为请求线程不会死。