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

簡單介紹Anyproxyhtml

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

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

環境要求:須要安裝nodejsnpm

提供的功能:跨域

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

實際操做,查找制定名稱的請求瀏覽器

我使用的anyproxy@beta。緩存

安裝命令服務器

sudo npm install -g anyproxy@betacookie

啓動網絡

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地址了

相關文章
相關標籤/搜索