anyproxy是爬移动app的好帮手,作为中间人攻击的中间人,可以拿到请求和响应,先来看下怎么用
1.安装
sudo npm install -g anyproxy
2.启动
anyproxy --port 8001
启动成功后会在可以直接访问 8002端口 进入anyproxy控制面板
http://127.0.0.1:8002/
同时监听8001端口的请求
3.手机连接,设置代理
4.手机安装ca证书(需要抓https时)
5.改启动方式 监听https
//默认是8001端口
anyproxy --intercept
有时候上面这种写法失败了,抓不到https,报verity相关错误 尝试
sudo anyproxy --intercept -i --ignore-unauthorized-ssl
6.拦截信息
用anyproxy的原因就是为了方便篡改和记录数据,这里用喜马拉雅fm里面的数据做个例子,编写一个rule.js文件
module.exports = {
*beforeSendResponse(requestDetail, responseDetail)
{
console.log(requestDetail.url);
if (requestDetail.url.indexOf('mobile/discovery/v2/category/metadata/albums/ts-') > 0) {
const newResponse = responseDetail.response;
var bodyjson=JSON.parse(newResponse.body);
// console.log(typeof newResponse.body);
// console.log(bodyjson);
var alumindex;
for(alumindex in bodyjson.list){
var alum=bodyjson.list[alumindex];
console.log(alum.albumId);
console.log(alum.title);
}
//注释掉的代码是用来redis保存数据的
// var redis = require('redis');
// var client = redis.createClient();
// client.sadd(['testximalaya',newResponse.body],function (err, reply) {
// console.log(reply);
// });
return null;
}
}
};
注意的是,这个rule.js文件是基于nodejs的,理论上nodejs能够做的如发起请求,保存数据文件,它都能干,方法自行百度
然后命令行启动anyproxy,关键参数 --rule 后面接rule.js的路径
sudo anyproxy --intercept --rule rule.js -i --ignore-unauthorized-ssl
7.使用效果
起来之后手机连上喜马拉雅,进到有声书,筛选,随便选个类目,anyproxy启动的终端会打印出取出来的参数,如下所示,上面是id,下面是标题
如果把代码里面的redis的注释拿掉,就会写入你的redis中