http spi (socket hook ) 你不能掉进的大坑

来源:互联网 发布:淘宝发布宝贝不同规格 编辑:程序博客网 时间:2024/05/17 05:03

本文论述的环境: http通信(网页浏览)


spi 基于lsp在socket链中加入一层  使其能控制socket

玩过剪贴板监控的人都知道 链是什么回事  不过这个spi比剪贴板链的控制力还强


说白一点 spi就是socket钩子


本文说明的重点不是WSPSend   而是WSPRecv时 


正常情况下  WSPRecv应该收到如下类似信息 


HTTP/1.1 200 OK\r\n
Date: Thu, 20 Feb 2014 02:10:58 GMT\r\n
Expires: Fri, 21 Feb 2014 02:10:58 GMT\r\n
Content-Length: 4064\r\n
Content-Type: application/json; charset=utf-8\r\n
Cache-Control: max-age=86400\r\n
Connection: Keep-Alive\r\n
Server: nginx/1.1.19\r\n
Content-Encoding: gzip\r\n
Fw-Via: MEM HIT from ctl-gd-250-017.fcm\r\n
\r\n?


如果加上我知道的常用的三种数据转换方式(字符集编码  压缩编码  传输编码   估计还有很多 我接触不多  不清楚)

WSPRecv收到的也应该是http响应头 +  一堆数据(可能经过了编码)


悲剧的事发生了:

项目是年底之前开始  过年时为了回家安装了猎豹浏览器  年后就开始这个模块 

因为猎豹帮我抢到票了  所以我一直用她

整整3天  我在猎豹上调试了3天spi   WSPRecv接收到的全是乱码  并有以下几点说明:

1:全乱码  看不清楚http响应头  (没有响应头信息  怎么知道用什么编码方式)

2:用wireshark测试 未用spi时的http活动数据  发现有gzip utf-8 chunked  3种编码方式 

解码的顺序肯定是先chunked  再  gzip  最后utf8转换  

chunked的特征非常明显  先数据大小(数字)后数据   这点我在猎豹上测试的没有发现这一点

gzip的特征也很明显 gzip压缩头是1f 8b  如下图所示

但是这些特征 我在猎豹上测试的时候都没找到 所以说在猎豹上的3天调试是悲剧的

因为猎豹浏览器不按标准走 (不知道是不是猎豹加入了其他加密方式来保护数据 反正我从socket等函数中没查到相关信息)    


===================================悲剧分割线======================================

无意中使用了qq浏览器  发现  spi这套qq压根不吃    (同是国产货  都是用自己的一套  一个玩的高端一个玩的。。。)

安装上火狐 (开源浏览器中的老大  不标准不行)  就收到如下信息:

HTTP/1.1 200 OK\r\n
Date: Thu, 20 Feb 2014 02:10:58 GMT\r\n
Expires: Fri, 21 Feb 2014 02:10:58 GMT\r\n
Content-Length: 4064\r\n
Content-Type: application/json; charset=utf-8\r\n
Cache-Control: max-age=86400\r\n
Connection: Keep-Alive\r\n
Server: nginx/1.1.19\r\n
Content-Encoding: gzip\r\n
Fw-Via: MEM HIT from ctl-gd-250-017.fcm\r\n
\r\n?


赤裸裸的  还有什么不好办的    

写本文的目的是告诉大家  写http spi时   要慎选浏览器  只是不标准的不要用  如果用  那就是坑自己





0 0
原创粉丝点击