使用 Python 请求库解析 HTTP 请求正文时出错

Error when parsing body of an HTTP request using Python Request lib

我已经在 Postman 应用程序中测试了一些请求。首先,我想在 Python(使用包请求)中获取 HTTP 请求的主体信息。响应显示为 200 OK。

response = session.request("POST", url, headers=headers, data=payload, verify ='custom-proxy-ca.crt')

现在我想得到正文

body = response.content

Print(body) 交付

b'\x83\x84\x01\x00\xc4\xff\xd4\xe9\xb4\xf6\xde,\x13\xa9\xc0(\xc7_\x8dL\x90\xf0\xb4K\xc4<\xe7\xb1M\x02)\xe0\x80z\xd0\xdf>\xcf\xd7\xd2\xec\x8d\x1e\xe4un\x0c\x83\xa1\x88g\xe7fah\x89\xbe\xca\xa8\x04_\xa2W\xbd\xfe]W\xd1\x06\x1f\xef~ZN\xa6\x0bq\xfa\x18\xc4\x1f\xb3\xf8\xc2\x9dF\xc5\xf0\xe6\x8d\xb6\xc1\xa0\xab\x7f\xfbyM\xe0\x88I\xb4\xd4\x82\xa1%\xd9R7Nt\xa4~<\x8c\x8e\xdb\xe7<xx-.\xab\xa7|16\xcb"\xba\x89\xbc\xe7\xcaF\xd1\xacV-u\xbf\xaa\x04\xf7\xa2\x88\xa1\x1bUI\xdfkI$`\x18:j\x7fU\x02\x0e\xcb\x97\x8em\xc6\x81\xe6\x85\xbe\xa5\xb9vbjQ$}M&n\xe0$A\xe0\xd9\xd2\xc6\x9aA\xf4\x12\x81/1\x0c\xf0(\x0cy\xf5\xaf\xca\x1bQ\x1082\xa1\xb4n4VRR\xbb7\xa5XO\x08\x0c\x13\xf2:\xc0-\x06\xa9\xda\xaeGX\x97B\x81!\x17\x87\xfa\xd1\x1b\xc0\xd0\x89|\xe8E\x0f\rp\xfd\x00\x96\xeaI\xbe\xda\xbb\xe3\x87\xc7\xdb\x9b\xfd\xab\xe8\xc7\xdd\x0cEL-x\xe0\x9bVhY\x0cT\x08\x95S\xa3\xfd\xdc\xe3\x81/1\x9d\x9e\'T\xf6\xe0pl\xd33#0,T}X%\x04\x0e\xd7r\xfd\x10\x0cs\xe90\x05\xe8\xe8\xf8\xea\xfc\xe5\xf8\xe1\xfd\xb9\xea\xe7\xe0\xc0\x9a!\xa1\M\xa8\x9d\x9f\xe4\xa2\x07_\xae\xd7\x0c\xdd\xb8\xaa\xbf\xe9\xfc\x1a|\x89^\xf59\x81\xe3J\x91\xa4v(\xff7J1\x1ao\x9c\x89\xa1#0\xf4\xaa\xa0\xc7\xbc\xea\x9f\xae\xa6\xe8\xa9-T\xc9#\xd1\x81\x7f\xee\x9a\xbb\xfd\x87\xc3\xe3+|K\xe2\xfdPe\xa0\xaa\x9d\x18\xf0\xcc\xc0\xf10\x80\xca\xb0XuW\x9d\xcc\xc0\xa5\xc8;bP\xdd\x9d\x1aeC\xfd\xf84\xa6\x14yG\xeb\xb5\x01\x03'

现在我尝试在正文中搜索令牌,但它似乎已加密。 如果我想获得 JSON 解析器的结果 json.loads(body) 它 returns UnicodeDecodeError:'utf-8' 编解码器无法解码位置 0 中的字节 0x83:起始字节无效。 好的,似乎编码的方式与预期的不同。但是 Postman 应用程序是如何对正文进行解码的呢?例如,我可以在那里读取它解析为 JSON(见下图)。 Python 我做错了什么?

Request

好了,问题解决了,不过还是想分享一下遇到这种问题的处理方法

最初的问题是调用带有header参数的HTTP POST请求Accept-Encoding like

'Accept-Encoding': 'gzip, deflate, br'

这行代码的意思是:本地可以接收压缩格式的数据。 服务器压缩大文件并在处理过程中将其发送回客户端。 IE接收到IE后,对文件进行本地压力。 错误原因是:程序没有解压文件

解决方法:删除这行代码即可