凭借 HTTP/HTTPS 正向代理,录制与回放 HTTP 请求。
npm install network-traffic-recorderHTTP往返数据流。并且,对后继的前端HTTP请求,回放 被缓存的真实服务器响应数据。
HTTP请求的往返数据。
HTTP/304化。为了避免缓存无意义的HTTP/304回复指令。·正向代理服务·在请求接力转发过程中,强制地 抹去了if-modified与if-match系HTTP缓存指令头。
HTTP往返数据流入本地文件,以完成数据持久化、共享/回放。
mime为application/json的HTTP往返数据流。
HTTPS往返数据流仅只被透传,并没有被缓存与分析。
HTTP往返数据流被缓存为base64字符串。而不是被ungzip之后的明文结果。在做数据分析时,才独立地去做ungzip处理。此外,这样也有利于今后缓存非文本类的数据内容。
pathname 相同
content-type 相同
application/x-www-form-urlencoded 表单数据中的 每一个键值对 相同,不论次序。
application/octet-stream(即,文件/图片上传),要求前后两次上传文件/图片的内容完全相同。
npm i network-traffic-recorder -g
network-traffic-recorder-single.cmd
network-traffic-recorder-single.cmd -p 7543
-p参数。
network-traffic-recorder-single.cmd --target-host=${目标主机域名} --target-port=${目标端口号}
network-traffic-recorder-single.cmd --help
shell
> usage: index.js [-h] [-v] [-p PORT] [-d DIRECTORY]
>
> 基于HTTP(S)正向代理的网络数据录制器
>
> Optional arguments:
> -h, --help Show this help message and exit.
> -v, --version Show program\'s version number and exit.
> -ai, --auto-ip 是否自动绑定当前主机IP
> -p PORT, --port PORT 监听端口号。 (默认值: 6891)
> -d DIRECTORY, --directory DIRECTORY
> 录制结果保存目录。(默认目录: ${current-working-folder}/tapes)
> -c {all,json}, --cache {all,json}
> 录制请求响应数据流的类型:【全部】all,【JSON】json。(默认类型:
> json,仅只录制"content-type": "application/json"的网络交通)
> -th TARGETHOST, --target-host TARGETHOST
> 当以独立·HTTP SERVER·(而不是,正向代理)运行时,将要被代理的【主机域名】
> -tp TARGETPORT, --target-port TARGETPORT
> 当以独立·HTTP SERVER·(而不是,正向代理)运行时,将要被代理的【主机端口号】。(默认值: 80)
> `
$3
init forward proxy listening on 192.168.50.235:6891 +0ms
复制出·正向代理服务·的·主机名/域名·与·端口号·。在这里,它们分别是192.168.50.235与6891。
下面在修改·手机·或·桌面浏览器·网络配置时,需要录入这两个值。
$3
【设备】 -> 【WLAN】 -> 长按WiFi配置项 -> 【修改网络】 -> 【高级选项】 -> 【代理】 -> 选择【手动】 -> 输入
1. 代理服务器主机名192.168.50.235
2. 代理服务器端口号6891
$3
【选项】 -> 【常用】 -> 【网络代理】 -> 【手动代理配置】 -> 【HTTP代理】 -> 输入
1. 代理服务器主机名192.168.50.235
2. 代理服务器端口号6891
数据缓存文件
记录了HTTP往返数据流的缓存文件位于:执行命令所在目录下的tapes/子目录下的一组本地json文件内。其中,每一个json文件的文件名格式为:http_域名_端口号.json
未来改进方向
$3
跨进程写文件·同步锁·要求:所有的slaver进程将文件内容使用postMessage发送给cluster进程进行统一写文件操作。cluster进程也需要根据从slaver进程传递来的文件内容的时间戳对所有文件内容片段进行排序。然后,cluster`进程再写文件。