python3.5使用parse.unquote解码一段疑似url编码,但依然输出乱码

vainquit
  • 4
新手上路,请多包涵
import re
import requests
import fmt
import json
from urllib import parse


a="""
seatpolicys=x%C2%9C%C3%95%C2%8F%C2%B1j%C3%830%10%C2%86_E%C3%9Cl%C2%95%C2%93%C2%84%C2%9DHo%C2%A3Z%C2%A2%C2%886%C2%8E%C2%A9%C3%A5%C3%81%C2%84%40%20%5B%C2%B7Nq%C2%B24K%C2%A0%5D%3Aw%C3%88%C3%A3%C2%A4.y%C2%8B%C3%8AJp!d%C3%AAR%0A%C2%B7%C3%9Cw%C2%BF%C3%AE%C3%B4%C3%8D%60%24d%3A%025%C2%83r%C3%BA%C3%A0%C3%B2%26%C2%9F%1A%C3%AB%0C%C2%A8%C2%88%13(%C3%B4%C3%84%C2%82%C2%82n%C3%BD~%5Cl%C2%BEv%C2%AF%C2%90%40%C3%A5%C3%B5%C2%A37%C3%9A%C3%B7%C2%9C%23%C2%93%14%C2%B3P%04Q%C3%85%0A%09%5B%C2%98a%C3%8E%C2%91%C2%A2%C2%A4%02%09G%25P%C2%A52%C3%8C%C3%AB%C3%8Az%17%C3%B7%C2%86%07%C2%94%C2%8B%13%C2%BD%C2%AD%C3%83%C3%B1%C2%BA%C3%B0%013%C3%9A%C2%AFqU%C2%A9%C3%B3%7B%7D%17%C2%83%C2%A1%3FwC(%C2%A2fb%0B%C3%AF%C2%9B%C3%92%C2%9E%C2%89q%C3%95%10%40%C2%BC%C3%81%C3%B0%C2%A1y%C3%92Kf%C3%AC%C2%AAd%C3%86.%24%0F%C3%BB%C3%8D%C3%A7sK%C3%A4%C2%B8%7Bj%C3%BF%C2%B1-%C2%BFn%C3%8B%7FlWo%C3%87%C2%8F%C2%97%C3%83%C2%BE%C3%AD%C2%96%5B2N%7Fc%7B%C2%9A3A%C2%A2%C3%94%C3%9F%C3%98%C3%8E%C2%BF%01Cd%C3%93%C2%81

"""

b=parse.unquote(a)

print(b)

以下是输出:

seatpolicys=xœÕ±jÃ0†_EÜl•“„Ho£Z¢ˆ6Ž©åÁ„@ [·Nq²4K ]:wÈã¤.y‹ÊJp!dêR
·Üw¿îôÍ`$d:5ƒrúàò&Ÿë¨ˆ(ôÂný~\l¾v¯@åõ£7Ú÷œ#“³PQÅ
    [˜aΑ¢¤    G%P¥2ÌëÊz÷†”‹½­Ãñºð3Ú¯qU©ó{}ƒ¡?wC(¢fbï›Òž‰qÕ@¼Áð¡yÒKfìªdÆ.$ûÍçsKä¸{jÿ±-¿nËlWoǏ—þí–[2Nc{š3A¢ÔßØοCdӁ

更新:我感觉似乎和gzip编码有关

首先,但凡引用到该cookie的xhr文件的请求头都带有gzip:

Accept: application/json, text/javascript, */*; q=0.01
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7,zh-TW;q=0.6,vi;q=0.5
Connection: keep-alive
Content-Length: 2
Content-Type: application/json; charset=UTF-8

然后我又发现有唯一一个js文件引用到seatpolicys这个cookie:

if ($.cookie('iscompress') != null) {
    var dec_jseatpolicys = pako.inflate($.cookie('seatpolicys'), { to: 'string' });
    seatpolicys = JSON.parse(dec_jseatpolicys);
}

以上代码中可以确认iscompress是1,而且我还捕获到了一个叫pako.min.js的文件。我上网查了一下,这个pako.min.js似乎就是个gzip的编码/解码工具,而pako.inflate(),我的理解就是引用了pako.min.js中的一个叫inflate()的函数来对那段包含seatpolicys的cookie进行解码。

但现在的问题是,我不知道该如何使用pako.min.js来对那段cookie解码,因为pako.min.js好像是被uglifyjs压缩了,我对这种不太熟悉。我直接在pako.min.js的末尾添加一行代码console.log(inflate(g, { to: 'string' })),其中g的值就是那段包含seatpolicys的cookie,结果报错。我不知道做到这一步是否有错,是否可以确定和gzip有关,如果没错的话,我后续再添加更多细节吧。

另外,这里有pako.min.js的下载地址:https://github.com/nodeca/pak...

以下是我修改pako.min.js的文件以及运行后报错的截图:

图片描述

回复
阅读 1.7k
1 个回答

需要先确定编码格式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏