用whistle和proxifier抓包調試任意客戶端的網絡請求

用web抓包調試代理工具時,常常會遇到沒法抓取命令行工具或某些客戶端的網絡請求,由於這些請求不走系統代理,這個給咱們的開發工做帶來一些不便,有沒有工具能夠實現抓包調試任意客戶端的請求?固然有,本文將講下如何用whistle和proxifier抓包調試任意客戶端的網絡請求,不只支持普通的web請求(HTTP、HTTPS、WebSocket),也支持TCP請求。html

先簡單介紹下whistle和proxifier:node

whistle簡介

whistle是基於Node實現的跨平臺web抓包調試代理工具:git

  1. 徹底跨平臺,支持運行在Mac、Windows、Linux/Unix桌面及命令行系統
  2. 支持抓包調試HTTP、HTTPS、WebSocket及Socket,能夠修改請求響應的全部內容
  3. 內置weinre,支持查看修改移動端網頁的DOM結構
  4. 內置Log功能,支持自動捕獲網頁的全部js異常及console.xxx輸出各類類型數據
  5. 操做簡單,全部操做均可以經過相似配置hosts的方式實現
  6. 支持經過Node模塊的插件擴展功能

有關whistle的詳細內容直接訪問Github:github.com/avwo/whistl…github

proxifier簡介

proxifier是一個跨平臺的設置代理客戶端,支持socks和http代理協議,它能夠攔截任意客戶端的全部網絡請求,並把請求代理到指定的代理服務器,proxifier基本用法能夠先參考:代理工具Proxifier如何使用web

有關proxifier的詳細內容直接訪問其官網:www.proxifier.comnpm

proxifier官方只有Windows和Mac版本,其它平臺如Linux能夠有不少替代方案,有須要的話能夠本身網上搜索瀏覽器

從上面的介紹可知,經過proxifier攔截任意指定客戶端的請求,並經過HTTP代理轉發到whistle,便可實現抓包調試任意客戶端的請求,下面詳細講下如何安裝配置whistle和proxifier實現該功能:bash

安裝配置whistle

  1. 安裝Node(若是已安裝能夠忽略此步驟):建議安裝最新版本Node,直接訪問官網安裝便可服務器

  2. 安裝whistle(須要安裝最新版本的whistle(>=v1.10.6)):網絡

    npm i -g whistle --registry=https://registry.npm.taobao.org
    複製代碼

    有些公司可能本身建了npm的鏡像,能夠用本身公司的npm命令安裝或設置 --registry=公司的鏡像

  3. 啓動whistle:

    w2 start
    複製代碼

    中止whistle:

    w2 stop
    複製代碼

    重啓whistle:

    w2 restart
    複製代碼

    查看whistle版本號:

    w2 -V
    複製代碼

    查看全部命令:

    w2 --help
    複製代碼

    whistle的默認端口爲 8899,若是須要修改端口能夠經過參數 -p 8888 進行修改,如:w2 restart -p 8888

  4. 安裝whistle根證書

  5. 開啓捕獲HTTPS請求

如何使用whistle請直接看Github上的README

安裝配置proxifier

proxifier是收費軟件,有30天免費試用期,能夠直接從官網下載安裝,或者經過電腦管家的軟件管理界面下載,網上也有不少破解的免費版本,有須要的話能夠本身網上搜索下載,安裝完proxifier後打開後作以下配置:

Windows和Mac的界面交互不太同樣,下面會分別給出二者的配置方法

  1. 去掉自動DNS設置

    • Windows:打開左上角菜單 -> 配置文件 -> 名詞解析 -> 勾掉 自動檢查 DNS 設置 -> 勾選經過代理解析主機名稱

      Windows客戶端去掉DNS設置

    • Mac:DNS -> 去掉第一個checkbox -> 勾上第二個checkbox

      Mac客戶端去掉DNS設置

  2. 設置無限循環鏈接檢測

    • Windows:打開左上角菜單 -> 配置文件 -> 高級 -> 勾選 無限循環鏈接檢測
      Windows客戶端勾選無限循環鏈接檢測
    • Mac:會自動檢測,彈出對話框時點擊肯定就能夠。
  3. 添加代理服務器

    • Windows:打開左上角 -> 配置文件 -> 代理服務器 -> 添加代理服務

      地址:127.0.0.1

      端口:8899(whistle的默認端口號,具體按whistle實際啓用的端口設置)

      協議:HTTPS

      Windows客戶端添加代理服務器

    • Mac:Proxies -> Add

      Mac客戶端添加代理服務器

  4. 忽略Node發出的請求: 配置完成後,用Chrome瀏覽器打開l.wproxy.con,這個時候proxifier會彈出檢測到循環鏈接的對話框,點擊肯定便可:

    Windows忽略Node發出的請求

  5. 配置後的效果

    Windows效果

配置完成後就能夠愉快的抓包任何客戶端的請求了。

上面是攔截全部客戶端請求,更建議只把想抓包的客戶端經過proxifier代理到whistle,能夠經過代理規則添加

可能遇到的問題

  1. 攔截全部客戶端請求後臺,有些客戶端可能採用了SSL pinning技術,致使該客戶端的https請求出現證書校驗失敗(如執行:git push),能夠禁用掉應域名的捕獲HTTPS請求 tunnel://github.com disable://capture 或者把該命令行工具添加到proxifier規則裏面並設置動做:Direct
  2. 若是要查看TCP請求數據包,能夠經過設置 tunnel://host enable://inspect (host 爲Network上顯示的域名或ip),這樣就能夠經過Network右側->Response->Frames查看TCP請求的幀數據,有關調試TCP(Socket)請參考:利用whistle調試WebSocket和Socket請求

更多問題能夠提ISSUEPR

相關文章
相關標籤/搜索