使用anyproxy 來抓取手機的數據包


簡單介紹Anyproxy

Anyproxy 是alibaba 前端團隊開源的http/https 的代理工具

官網地址:http://anyproxy.io/cn/

環境要求:需要安裝nodejs

提供的功能:

  • 調試線上頁面,需要注入某個腳本,或是替換一些html數據。比如常用的移動端調試工具weinre就依賴這種方法
  • 不改url,把請求發送到某台指定的服務器,移動端的dns結果有緩存,改host又效率太低
  • 查看頁面首次打開時的表現,需要阻止CDN提供304這樣的響應
  • 服務器不支持跨域頭Access-Control-Allow-*,調試時卻需要發送跨域請求。本地服務器調試app中嵌入的離線頁面時常面對這種需求
  • 替換cookie,快速實現多賬戶切換
  • 模擬各類網速環境
  • 接管某個API的響應,進行數據mock

實際操作,查找制定名稱的請求

我使用的anyproxy@beta。

安裝命令

sudo npm install -g anyproxy@beta

啟動

anyproxy

出現如下

➜  ~ anyproxy                         

[AnyProxy Log][2017-02-07 10:43:23]: the default rule for AnyProxy.

[AnyProxy Log][2017-02-07 10:43:23]: Anyproxy rules initialize finished, have fun!

[AnyProxy Log][2017-02-07 10:43:23]: GUI interface started at : http://172.18.6.97:8002/

[AnyProxy Log][2017-02-07 10:43:23]: Http proxy started at 172.18.6.97:8001

代理的ip為 172.18.6.97 端口為8001

界面地址為http://172.18.6.97:8002/,可以在瀏覽器打開該地址

將手機的網絡請求設置代理服務器                                

設置完成后,打開app進行操作

在GUI頁面中設置過濾關鍵字

 

可以看到帶有pageapp的請求就被過濾出來了。

現在我打算把這些記錄導出,界面上看來沒有辦法了。我們通過rule.js 來實現

先關閉之前的anyproxy ,按照如下命令啟動

 anyproxy --rule Documents/rules/pageapp.js

pageapp.js 內容如下

var logMap = {}
var fs = require('fs');
var logger = fs.createWriteStream(__dirname + '/urlLog.log', {
  flags: 'a' // 'a' means appending (old data will be preserved)
})
function logPageFile(url) {
    if (!logMap[url]) {
        logMap[url] = true;
        logger.write(url + '\r\n');
    }
}
module.exports = {
    summary: function() {
        return "查找app中的帶有pageapp的h5請求";
    },
    replaceResponseStatusCode: function(req, res, code) {
        return new Promise((resolve, reject) => {
            if (code == 200 && /pageapp/g.test(req.url) && res.headers['Content-Type'] == 'text/html') {
                logPageFile(req.url)
            }
            resolve(code);
        });

    }

}

這樣就可以抓取到瀏覽過的h5地址了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM