真機聯調經常使用方式和強大的Fiddler
whistle真機調試css
以前發表過一篇文件關於真機調試的幾種方式,可是都各自有些不便的地方,最近發現一個不錯的工具就補充上來了html
whistle(讀音[ˈwɪsəl]
,拼音[wēisǒu]
)是基於Node實現的跨平臺抓包調試代理工具,有如下基本功能:android
安裝啓動whistle,須要如下步驟: 安裝Node(我默認大家本身會裝)、安裝&啓動whistle、配置代理git
yarn global add whistle // ----------OR--------- npm install -g whistle
能夠經過如下方式來訪問配置頁面:github
http://local.whistlejs.com/
,若是沒法訪問通常是由於沒有啓動whistle或者配置代理http://whistleServerIP:whistlePort/
. e.g. http://127.0.0.1:8899
-P xxxx
自定義whistle的端口(xxxx
表示要設置的端口號),自定義端口支持上述兩種方式訪問,也支持 http://127.0.0.1:xxxx
w2 start -p 8899 //不設置端口默認使用8899 [i] whistle@1.14.0 started [i] 1. use your device to visit the following URL list, gets the IP of the URL you can access: http://127.0.0.1:8899/ http://192.168.x.xxx:8899/ Note: If all the above URLs are unable to access, check the firewall settings For help see https://github.com/avwo/whistle [i] 2. configure your device to use whistle as its HTTP and HTTPS proxy on IP:8899 [i] 3. use Chrome to visit http://local.whistlejs.com/ to get started
w2 help
啓動完成後在chorme下打開 127.0.0.1:8899
能夠看到這麼一個頁面:
正則表達式
通常不必進行全局代理,因此咱們直接跳過chrome
在chrome擴展應用安裝Proxy SwitchyOmega
,成功以後按照以下截圖設置
而後點擊擴展程序選項
,配置以下
新開Tab打開百度,而後返回127.0.0.1:8899
頁面就看到已經能夠抓取請求了
npm
配置當前Wi-Fi的代理
而後再在手機經過IP+端口方式訪問http://whistleServerIP:whistlePort/
segmentfault
按照截圖步驟安裝便可瀏覽器
打開瀏覽器掃二維碼便可
rootca.pro
,按提示安裝證書(或者經過 whistle 控制檯的二維碼掃碼安裝,iOS安裝根證書須要到鏈接遠程服務器進行驗證,須要暫時把Https攔截功能關掉)Settings > General > About > Certificate Trust Testings
whistle
控制檯二維碼掃碼安裝,或者瀏覽器地址欄 rootca.pro
按提示安裝點擊頁面上方菜單欄的Create
按鈕,新建一個名爲test
的分組,並參照下面例子輸入對應的規則配置,記得輸完以後右鍵分組保存一下規則.
默認方式
# 默認是將匹配模式寫在左邊,操做uri寫在右邊 pattern operatorURI
傳統方式
# 操做URI寫在左邊 operatorURI pattern
組合方式
# 傳統組合方式 pattern operatorURI1 operatorURI2 operatorURIN # 若是pattern部分爲路徑或域名,且operatorURI爲域名或路徑 # 這種狀況下也支持一個操做對應多個pattern operatorURI pattern1 pattern2 patternN
指定www.test.com的ip和端口,把請求轉發到本地8899端口
www.test.com 127.0.0.1:8899 # or 127.0.0.1:8899 www.test.com
保存以後輸入新開Tab輸入地址www.test.com
會重定向到127.0.0.1:8899
本地新建文本test.txt
# Mac、Linux不熟悉,不太清楚 # Windows的路徑分隔符能夠用 \ 或者 / www.test.com file://C:\test.txt
www.test.com域名下的請求都替換成對應的www.test2.com域名
www.test.com www.test2.com
whistle會自動根據響應內容的類型,判斷是否注入相應的文本及如何注入(是否要用標籤包裹起來)。
www.test.com file://C:\test.html www.test.com file://C:\test.js www.test.com file://C:\test.css
全部www.test.com
域名下的請求,whistle都會根據響應類型,將處理好的文本注入到響應內容裏面,如是html請求,js和css會分別自動加上script
和style
標籤後追加到內容後面。
查看請求響應的詳細信息及請求列表的Timeline,還有請求匹配到的規則
用來重發請求、構造請求,能夠自定義請求的url、請求方法、請求頭、請求內容。
能夠直接複製下面的連接試試
https://www.baidu.com/s?ie=ut...
Create
:建立規則分組Delete
:刪除分組Edit
:重命名分組Settings
Theme
:設置主題Font size
:設置字體大小Show line number
:是否顯示行數Allow multiple choice
:是否容許多選Disable all rules
:是否禁用全部規則,包括插件的規則Disable all plugins
:是否禁用插件規則Synchronized with the system hosts
:是否把配置同步到本地的hosts文件(須要root權限)Import system hosts to Default
:導入本地的hosts配置到Default分組(須要root權限,且會覆蓋原來的配置)
表示只要匹配其中一個條件的請求就不會在當前頁面的Network裏面顯示,多個條件用空格或換行分割,支持如下條件: /^(m|i|h|b|c|d|H)
表示若是裏面設置了條件,則要匹配該條件,且不匹配 Exclude Filter 的請求才會顯示在當前頁面的Network裏面,可設置的條件及分割符同 Exclude Filter。
當前whistle是否在線及查看whistle服務的基本信息
主要用於調試遠程頁面特別是移動端頁面,能夠經過此功能把遠程頁面 console
打印的信息展現出來
Console
顯示頁面拋出的異常或經過 console
打印的信息Server
顯示 whistle 內部發生的異常信息All Logs
用於切換不一樣頁面的 log 顯示顯示頁面拋出信息,以百度爲例
# pattern log:// m.baidu.com log://
# pattern log://filepath m.baidu.com log://C:\work\project\test\test.js # 腳本代碼以下 # console.error({ error: true }); # console.warn({ error: true, warn: { test: true } }); # console.log(123456);
# 下面表示匹配pattern的同時不能爲post請求且請求頭裏面的cookie字段必須包含test(忽略大小寫)、url裏面必須包含 cgi-bin 的請求 # 即:過濾掉匹配filter裏面的請求 pattern operator1 operator2 excludeFilter://m:post includeFilter://h:cookie=test includeFilter:///cgi-bin/i # 下面表示匹配pattern一、pattern2的請求方法爲post、或請求頭裏面的cookie字段不能包含相似 `uin=123123` 且url裏面必須包含 cgi-bin 的請求 operator pattern1 pattern2 includeFilter://m:post excludeFilter://h:cookie=/uin=o\d+/i excludeFilter:///cgi-bin/i # 下面表示匹配pattern的請求忽略除了host之外的全部規則 pattern ignore://*|!host # 下面表示匹配pattern的請求忽略file和host協議的規則 pattern ignore://file|host
手機或者PC打開百度隨意點擊一個請求都能看到當下的輸出信息
只需配置一條規則便可經過在pc上經過weinre修改網頁的DOM結構及其樣式
在rules裏配置規則
# test只是做爲一個區分,方便多個不一樣頁面調試 m.baidu.com weinre://test
打開Weinre>test,看到截圖以下
而後就能開始作調試了