当前位置: 首页 > 后端技术 > Node.js

anyproxy转发body

时间:2023-04-03 21:18:14 Node.js

之前一直用fiddler抓包数据转发给自建服务器,但是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.js4。在浏览器中登录127.0.0.1:8002可以更直观的看到抓包数据。浏览器用于调试,实际抓包时不需要打开。说说我踩过的坑:anyproxy使用的是node.js语法,所以编辑sample.js时如果使用js的ajax语法是无效的。下面是一段我使用的抓包数据体,通过node.jspost请求将数据转发到自建服务器进行分析//sample.jsmodule.exports={//summary:'自定义微信请求',//beforeSendResponse:数据获取成功并解析后,准备返回cli前进行处理。*beforeSendResponse(requestDetail,responseDetail){//当anyproxy匹配到url地址包含/aw/v4/aw/post/,数据体通过node.js以json字符串形式发布到自建服务器if(requestDetail.url.indexOf('/aw/v4/aw/post/')!=-1){vardata={str:responseDetail.response.body.toString()};//解析为自己服务器路径letres=sendPostHttpRequest(data,'parse');}},};//node.js的post请求,不能用js的ajax请求functionsendPostHttpRequest(body,route){varhttp=require('http')varquerystring=require('querystring');letoptions={hostname:'127.0.0.1',port:5001,path:'/'+route,method:'POST',headers:{"content-type":'application/x-www-form-urlencoded'复制代码}};varcontents=querystring.stringify(body);varreq=http.request(options,function(res){res.setEncoding('utf8');});req.write(内容);req.end();};