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时 要慎选浏览器 只是不标准的不要用 如果用 那就是坑自己
- http spi (socket hook ) 你不能掉进的大坑
- ubuntu安装mysql不能远程访问的大坑
- Hook与Socket Hook
- Hook与Socket Hook
- HOOK SOCKET
- hook socket send recv的代码(zz)
- tomcat的CATALINA_HOME配置(注意大坑)
- socket http的理解
- http、socket的区别
- 你不能不知道到的Hook!
- 你不能不知道到的Hook!
- 你不能不知道到的Hook!
- 掉进了这几个大坑的程序员不可能获得高薪
- ReflectionMethod->invokeArgs的大坑
- ui::UIScrollivew 的大坑
- level-list 的大坑
- ViewPropertyAnimator的一个大坑
- greendao的一个大坑
- 定义点类,并以点类为基类,派生出直线类,从基类中继承的点的信息表示直线的中点。
- 一、Camparable和Comparator的区别
- 关于IAR Embedded Workbench的Licence问题
- java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
- JavaScript高级程序设计(第3版)读书笔记汇总
- http spi (socket hook ) 你不能掉进的大坑
- 生活杂记
- 我的另一个起点
- 如何成为一个geek?
- IOS服务器推送通知
- oracle 中使用 exp 和 imp 以及 expdp 和 impdp 命令
- 一个比较好用的轻量级时间选择控件 ----- JQUERY特效模板
- CentOS 6.4 服务器版安装教程(超级详细图解)
- 字符串日期格式的转换