一般使用 Fiddler 插件进行 Hook 操作的流程如下:
添加好代码后,F12 启动抓包,然后如下清除浏览器 Cookies,刷新页面即可完成注入:
但是这时并没有 Hook 住并打印数据,查看 Console 发现有如下报错 Fiddler - Connection Failed :
以上显示 Fiddler 连接失败,但是查看 Fiddler 中的抓包情况,也都是正常的,后来发现是开启了 Stream(流模式)的问题:
- 流模式(Streaming):Fiddler 会即时将 HTTP 响应的数据返回给应用程序,更接近真实浏览器的性能,时序图更准确,但是不能控制响应。
-
缓冲模式(Buffering):直到 HTTP 响应完成时才将数据返回到应用程序,可以控制响应,修改响应数据。
综上:开启流模式无法控制响应,修改相应数据,而 Hook 程序是在系统还没有调用函数执行前,就先捕获该消息,得到程序的控制权,改变函数的执行行为,在原方法前后加入自定义方法,从而实现对方法的重写,相当于修改了数据,所以,Hook 操作的时候不能开启 Stream!