之前一直使用 fiddler 来抓包数据并转发到自建server,但 fiddler 缓存太大,只能通过关闭重启 fiddler 才能清除缓存,电脑内存不够是很麻烦的事.现在有了 anyproxy 就解决了缓存问题.
anyproxy 是和 fiddler 基本作用一样的抓包工具,安装不介绍了,都能搜到,写写 rule.js 的二次开发.
anyproxy 默认启动加载的规则文件路径在
C:\Users\li\AppData\Roaming\npm\node_modules\anyproxy\lib\rule_default.js
我们做数据加工或者转发可通过自建 js 来实现.以windows为例:
1.可在桌面创建 sample.js, 将数据处理逻辑写入 sample.js 中.
2.打开 cmd,进入桌面,或者不进入桌面,第 3 步写 sample.js 绝对路径也行.
3.通过 sample.js 启动 anyproxy,启动命令: anyproxy -i --rule ./sample.js
4.浏览器登录 127.0.0.1:8002
就能更直观的看到抓包的数据,浏览器作为调试使用,真正抓包时不用开启.
说下我踩的坑: anyproxy 是使用的 node.js 语法,所以编辑 sample.js 时如果使用到 js 的 ajax 语法是无效的. 下面贴一段我使用的抓包数据 body, 并通过 node.js post 请求将数据转发到自建的 server 进行解析.
// sample.js
module.exports = {
//summary: 'customized wechat request',
// beforeSendResponse: 在数据获取成功并解析成功后准备返回给 cli 之前做数据处理.
*beforeSendResponse(requestDetail, responseDetail) {
// 当 anyproxy 匹配到 url 地址中含有 /aw/v4/aw/post/,将数据 body 通过 node.js 以json字符串 post 到自建server
if (requestDetail.url.indexOf('/aw/v4/aw/post/') != -1) {
var data = {
str: responseDetail.response.body.toString()
};
// parse 为自己 server 路径
let res = sendPostHttpRequest(data, 'parse');
}
},
};
// node.js 的 post 请求,不能用 js 的 ajax 请求
function sendPostHttpRequest(body, route) {
var http = require('http')
var querystring = require('querystring');
let options = {
hostname: '127.0.0.1',
port: 5001,
path: '/' + route,
method: 'POST',
headers: {"content-type": 'application/x-www-form-urlencoded'}
};
var contents = querystring.stringify(body);
var req = http.request(options, function(res){
res.setEncoding('utf8');
});
req.write(contents);
req.end();
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。