首页 文章

无法解码Python Web请求

提问于
浏览
4

我正在尝试向我的交易账户发出网络请求 . Python无法解码Web请求 . 使用代码200的Web请求成功 .

这是下面的代码

import requests

headers = {
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-US,en;q=0.9',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
    'x-kite-version': '1.2.1',
    'accept': 'application/json, text/plain, */*',
    'referer': 'https://kite.zerodha.com/orders',
    'authority': 'kite.zerodha.com',
    'cookie': '__cfduid=db8fb54c76c53442fb672dee32ed58aeb1521962031; _ga=GA1.2.1516103745.1522000590; _gid=GA1.2.581693731.1522462921; kfsession=CfawFIZq2T6SghlCd8FZegqFjNIKCYuO; public_token=7FyfBbbxhiRRUso3425TViK2VmVszMCK; user_id=XE4670',
    'x-csrftoken': '7FyfBbbxhiRRUso3425TViK2VmVszMCK',
}

response = requests.get('https://kite.zerodha.com/api/orders', headers=headers)


x=str(response.content.decode("utf-8") )

b“的1X \ X14 \ X00 \ XFE \ XA7 \ x9b \ XD3 \ XCA \ xbd9- \ X12 \ X83 \ xbfULS1 \ x1d8 \ x9d \ x0e \ XD4 \ XCF \ XBD \ XB8 \ XD1 \ xbd4 \ XC0 \ X00 \ X13〜\ X94} \ XE4 \ X81 \ XA4 \ x90P \ x1cfs \ XCD \ X1E \ xaeG \ x9b},米\ XBD \吨\ x84L1 \ XDE \ xa8e \ x8a \ xf1h \ x0e \ X0C)\ X1A \ X12 \ xfb的\ x06z \ XEC \ X18 \ xe4r \ XA1 \ X1C \ X11 \ xe8 \ xbcO \ XEC \ XE2 | \ xa6 \ X90版权所有\ xA9 \ XDF \ XF2 \ XE1 \ XFA \ XF3 \ X1E \ X04 \ x0e \ XA2 \ x8d \ x0e \ XC4 \ TW \ XEB \ xd9 \ XBA \ n \ xf1H'l \ XEB> \ X08 \ x85L \ r \ x0cY \ XF8 \ x81D;!\ X92Ó\ XFD \ XBD \ xe3u> 3 \ X10 \ XE1 \ x8c; \ XB8 \ x9e \ xceA \ XAE \ x0exX \ xc9 \ x19s \ XEB \ xe5r〜1 \ X98 \ xed0 \ XB8 \ XDC \ XB4 \ X17:\ X14 \ x96xAn \ xb9 \ XF0 \ XCE \ XF2L \ xa6G?50 \ x9b \ XF3 \ XC1 \ X1F \ X0F \ x8fs \ X1B / \ X17 \ X1A \ X0C [ySAX \ X1D'\ XE7 \ XBB \ NX \ xacR〜\ XBB \ x9f \ xe0 \ x8c?的\ XC0 \ X8F \ xe0 \ X97 \ XFF \ XDE'\ xc7#\ X8F \ X97 \ XAF \的Xaa%\ XF2 \ xf9 \ xfaC | \ XCF \ t \ XF3 \ XEB \的Xaa \ XDCS \ XCC \ XF5 \ xa3RM \ xbaOY \ XF5 \ x9fe \ XFC \ X07 \ XFF \ X01"

无法解码 . 在stakoverflow上尝试了unicode-utf 8和各种代码但是它失败了 .

1 回答

  • 6

    根据 response.headers (您没有提供,但通过运行代码可以轻松恢复),响应使用Brotli compressionContent-Encoding': 'br' )进行编码 . 您可以使用brotlipy解压缩它:

    import brotli
    brotli.decompress(response.content)
    #b'{"status":"success","data":[{"placed_by":"XE4670","order_id":"180331000000385",  
    #"exchange_order_id":null,"parent_order_id":null,"status":"REJECTED",
    #"status_message":"ADAPTER is down","order_timestamp":"2018-03-31 07:59:42", 
    #"exchange_update_timestamp":null,...}
    

    现在,它是JSON,正如所承诺的那样( 'Content-Type': 'application/json' ) .

相关问题