binux / qiandao

签到
https://qiandao.today
3.42k stars 706 forks source link

HTTPS网站POST方式返回数据中的值无法匹配 #72

Closed pk000 closed 7 years ago

pk000 commented 7 years ago

用Chrome记录的har文件中,有HTTPS网站签到使用POST方法后,返回的content内容如下: "content": { "size": 56, "mimeType": "text/html", "text": "{\"msg\":\"\u83b7\u5f97\u4e86 164 MB\u6d41\u91cf.\",\"ret\":1}" }, msg里面的内容是“获得了 164 MB流量.”。 但是测试的时候返回的数据显示是乱码,无法匹配。

binux commented 7 years ago

这是 JSON 的编码,你匹配 "\u83b7\u5f97\u4e86 164 MB\u6d41\u91cf."不就完了。

pk000 commented 7 years ago

上面JSON编码的msg里面u前面是2个\。 但是content匹配规则填1个\和2个\都不匹配。

binux commented 7 years ago

那就填4个

pk000 commented 7 years ago

4个也不行

pk000 commented 7 years ago

原始返回: "content": { "size": 75, "mimeType": "text/html", "text": "{\"msg\":\"\\u60a8\\u4f3c\\u4e4e\\u5df2\\u7ecf\\u7eed\\u547d\\u8fc7\\u4e86...\",\"ret\":1}" },

对应文本: 您似乎已经续命过了...

网页上测试返回的结果: �P ��R���T���2���dQI�������a�>\ω˶jɱKvv�:c��V�4�����Pp����

直接复制乱码可以匹配成功……

binux commented 7 years ago

你是不是勾选了 gzip 或者类似的东西?

pk000 commented 7 years ago

啊!这个才是关键!取消gzip就可以看到原始文本了! 谢谢解答!

pk000 commented 7 years ago

还有一个问题。 最后签到提取变量__log__的时候用正则表达式能够匹配到\u60a8\u4f3c\u4e4e\u5df2\u7ecf\u7eed\u547d\u8fc7\u4e86...,但是不能转换为需要的中文字符。 而且匹配签到失败的情况下,就会显示failed at 2/2 request,不再显示提取的变量值。

binux commented 7 years ago

不能 现在失败应该会显示因为什么规则失败啊

pk000 commented 7 years ago

哦,明白了。 还以为失败日志可以不显示哪条规则失败,直接显示提取的文本呢。