AnyProxy代理


背景:當一個公司測試團隊有多個人的時候,只需搭建一個AnyProxy服務,其它小伙伴瀏覽器上打開AnyProxy頁面,手機上設置代理就能抓到http、https請求了。解決了部分人電腦不正經的小伙伴fiddler死活抓不到https請求的問題,也解決了破解charles安裝的問題,也不用在每個電腦都去安裝一個抓包工具的問題。AnyProxy 是完全可以靈活配置的代理服務器。它支持 https明文代理 ,且提供了 Web 界面便於觀測請求情況,同時支持二次開發,可以用 JavaScript 來控制代理的全部流程。

        簡介:AnyProxy是阿里團隊基於node.js開發的一款抓包神器,可以抓取http、https、websocket請求,且高度可定制。優點:

1.同時兼容mac/windows用戶

2.只需打開web頁面,就能抓到手機app上的http、https請求了

        下面介紹一下安裝步驟,因為本人使用Mac,所以以Mac安裝為例(Windows安裝步驟也是類似的):

安裝NodeJS:在官網https://nodejs.org/en/下載安裝包,下載左邊的LTS版本,傻瓜式安裝即可 ,如圖

安裝完成后輸入node -v查看版本號

cnpm安裝anyproxy:由於新版的nodejs已經集成了npm,所以之前npm也一並安裝好了。可以通過輸入 :npm -v來測試是否成功安裝,如圖

如果npm版本過低,可以通過指令升級npm版本:npm install npm -g

通過npm直接安裝anyproxy(不過安裝速度比較慢):npm install -g anyproxy

因為安裝npm很慢,可以通過cnpm安裝,使用淘寶鏡像地址,這個相當於是npm的升級版,先用npm安裝cnpm,淘寶鏡像地址:http://registry.npm.taobao.org,命令如下:npm install -g cnpm --registry=https://registry.npm.taobao.org

用cnpm安裝anyproxy(安裝速度快):cnpm install -g anyproxy

如果報以下錯誤提示沒有權限,可以在命令前加sudo,如圖

啟動anyproxy:在終端輸入:anyproxy,如圖

打開瀏覽器輸入:http://localhost:8002或者http://127.0.0.1:8002,就能打開anyproxy頁面了(此時還不能抓包)

要想找到https請求,電腦上還需安裝證書,打開anyproxy web頁面-->RootCA-->Download-->rootCA.crt,傻瓜式下一步安裝,如圖

確認https證書是否安裝可以輸入命令查看:anyproxy-ca,如圖

安裝證書,然后進入證書目錄,如圖

通過anyproxy -i命令啟動監聽即可捕獲https請求

電腦啟動代理,如圖

然后手機安裝證書,可以直接在瀏覽器中輸入http://xxxx:8002/fetchCrtFile(ip換成自己anyproxy機器地址),安裝證書,如圖

證書安裝完成后,在手機上設置代理,如圖

在手機上打開app操作,就能抓到app上 的請求了,如圖

        anyproxy還可以代理websocket,在終端輸入命令:anyproxy --ws-intercept

使用anyproxy -i不能關閉命令行,不過可以使用pm2來管理anyproxy,:pm2 start anyproxy -x -- -i

通過pm2來初始化並啟動一個anyproxy,啟動anyproxy后可以隨時關閉命令行,若要查看anyproxy啟動狀況,執行命令:pm2 list

如果要關閉anyproxy:pm2 stop anyproxy

如果要再啟動anyproxy:pm2 start anyproxy

如果要重啟anyproxy:pm2 restart anyproxy

        Anyproxy提供的配置還是很靈活的,它提供的一個典型的規則模塊代碼結構如下:

// rule.js
module.exports = {
// 模塊介紹
summary: 'my customized rule for AnyProxy',
// 發送請求前攔截處理
*beforeSendRequest(requestDetail) { /* ... */ },
// 發送響應前處理
*beforeSendResponse(requestDetail, responseDetail) { /* ... */ },
// 是否處理https請求
*beforeDealHttpsRequest(requestDetail) { /* ... */ },
// 請求出錯的事件
*onError(requestDetail, error) { /* ... */ },
// https連接服務器出錯
*onConnectError(requestDetail, error) { /* ... */ }
};
調用 anyproxy --rule rule.js 即可。

        Anyproxy的配置靈活,其他的使用規則可以參考官方文檔:http://anyproxy.io/cn/。
————————————————
版權聲明:本文為CSDN博主「dou_being」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/dou_being/article/details/101150024


免責聲明!

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



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