工具:anyproxy 安卓模擬器 mumu springmvc程序 js command腳本
原理:安卓模擬器 安裝了軟件后,利用代理 攔截請求,獲得json通過js發送給spirngmvc程序,然后存到數據庫,通過command腳本實現安卓模擬器自動翻頁
先安裝anyproxy
https://www.cnblogs.com/yoable/p/6374134.html
下載mumu模擬器
打開mumu模擬器 for mac or for windows
然后命令行 敲 anyproxy --intercept
到網易mumu模擬器中 設置網絡代理 本機的Ip 然后8001
到模擬器的瀏覽器中敲
http://本機ip:8002/fetchCrtFile 下載ca證書,破解https連接
然后ctrl + c 把之前的命令行干掉
啟動我們的springmvc程序
啟動好之后 執行命令anyproxy --intercept --rule /Users/liyj/sample.js (sample.js的絕對地址,里面是一些回調函數,就是當Json傳過來的時候回調用這些方法,方法中我用的ajax異步調用springmvc程序)
sample.js文件內容
var logMap = {}
var fs = require('fs');
var http = require('http');
var querystring=require("querystring");
var logger = fs.createWriteStream('/Users/liyj/urlLog.log', {encoding: 'utf-8',flag: 'a'});
function logPageFile(url) {
logger.write(url + '\r\n');
}
module.exports = {
*beforeSendResponse(requestDetail, responseDetail) {
if(requestDetail.url.indexOf('api-eagle.amemv.com/aweme/v1/feed/') == -1 &&
requestDetail.url.indexOf('aweme-eagle.snssdk.com/aweme/v1/feed/') == -1)
return;
var options = {
//springmvc程序的ip和端口 就是本機Ip和端口
hostname:'192.168.5.62',
port:8081,
method: 'POST',
//requestmapping映射的哪個路徑
path: '/scheduler-crawler/crawldy/do',
headers: {
'Content-Type': 'application/json'
},
json : {"json" : "fdsaf11"}
};
var post_req = http.request(options, function(_res){
_res.setEncoding('utf8');
_res.on('data', function (chunk) {
console.log('Response: ' + chunk);
});
});
post_req.write(responseDetail.response.body,'utf-8');
post_req.end();
}
}
然后打開模擬器中的抖音程序,向下翻頁就可以抓取了。抖音是一次返回6條數據 翻6次后 重新在返回6條
利用adb連接模擬器后,adb在模擬器上模擬向下滑操作,這種就跟人為看視頻操作一樣,很難被察覺
adb connect 127.0.0.1
然后執行/Users/liyj/Desktop/f.command ; exit;(f.command文件的絕對路徑)
f.command內容為
for (( j=40;j<50000000;j++))
do
adb shell input swipe 400 850 400 200 350
done
