<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          前端開發(fā)必須知道的抓包神器!

          共 3952字,需瀏覽 8分鐘

           ·

          2024-04-11 17:41

              

          前言

          好多人認為whistle是抓包工具,殊不知抓包只是whistle能力的冰山一角。除了抓包外,它還能修改請求與響應、真機調(diào)試h5移動端、解決跨域、域名映射等等等。總而言之,使用whistle能夠提升我們的開發(fā)效率,改善開發(fā)體驗。

          whistle一出手就是抓包工具的極限,那年它雙手插兜不知道什么是對手(doge)。

          安裝&使用

          安裝與啟動whistle

          npm install -g whistle
          w2 start // 啟動whistle

          w2 stop //停止whistle

          啟動之后會在本機啟動一臺服務器,默認端口是8899

          在本機打開該地址會進入whistle的控制面板,如下圖所示。抓包,修改請求和響應的內(nèi)容都是在這個控制面板內(nèi)進行配置的。如果要防止其他人訪問配置頁面,可以在啟動時加上登錄用戶名和密碼 -n yourusername -w yourpassword

          瀏覽器代理插件

          在啟動本地啟動了whistle之后,要抓包網(wǎng)絡的請求并不會經(jīng)過whistle,這時候我們就需要安裝一個插件,讓目標網(wǎng)站的請求經(jīng)過whistle完成抓包等后續(xù)的操作。

          官方推薦的插件是SwitchyOmega,如果你使用的谷歌瀏覽器需要在應用商店翻墻進行下載。如果不想翻墻可以直接使用自帶的edge瀏覽器,在edge的應用商店下載可以免翻墻。點擊獲取即可輕松下載。

          安裝完成之后瀏覽器的工具欄內(nèi)就會出現(xiàn)一個圓圈圖標。

          我們進入選項界面對瀏覽器代理進行配置,把代理服務器填寫whistle啟動的端口和地址,然后把switchyOmega的選項改為proxy服務器代理就完成了。

          這時候在瀏覽器內(nèi)打開想要抓包的網(wǎng)站就可以抓包了。目前只可以抓http的請求,因為我們還沒有進行證書配置,如何配置證書后面會說。

          注意如果使用edge下載的插件就只能在edge插件內(nèi)進行抓包,如果在谷歌打開網(wǎng)站,并不會有抓包的信息。

          配置證書

          雖然現(xiàn)在在whistle的network內(nèi)打印出了一些信息,但全部都是http的請求,并沒有https的請求,這是因為我們沒有配置證書。配置證書方法如下,點擊二維碼進行證書下載(沒錯這個二維碼是可以點擊的,繃住了),隨后跟著步驟走就行了。

          安裝證書請參考文檔: https://wproxy.org/whistle/webui/https.html

          配置成功的話https這塊會變成一個對勾。

          配置完證書之后再次刷新頁面,就可以看到所有的https請求了,可以清晰的看到請求體和響應體的內(nèi)容

          手機抓包

          首先抓包的前提是手機和電腦要處于一個網(wǎng)絡下。關閉電腦端的防火墻,然后在手機的wifi設置中,把WiFi的代理模式設置為手動代理,主機名和端口號是 電腦的ip地址+whistle的端口號。ip地址可以通過終端的ipconfig查詢。

          配置完之后手機發(fā)送的請求在whistle的network列表中就能看到了。在手機端訪問一下掘金的官網(wǎng)。

          在工具欄這塊可以通過settings選項對請求進行過濾。可以在whistle中看到手機端訪問的列表數(shù)據(jù)。

          應用場景

          whistle的強大遠遠不止能夠抓包這么簡單,它還有很多其他的功能。

          Weinre控制臺

          集成weinre的功能,用戶只需通過簡單配置(pattern weinre://id)即可使用,具體參見weinre,更多移動端調(diào)試方法可以參考:利用whistle調(diào)試移動端頁面。

          相信有過h5開發(fā)經(jīng)歷的同學都遇到過這種情況,我電腦f12模擬移動端調(diào)試的時候非常的完美,但是一到真機上會出現(xiàn)各種奇奇怪怪的問題,而這些問題往往是比較難以定位問題并修復的,因為在真機的h5頁面上沒有控制臺,我們無法審查元素。

          但是當你使用了whistle你會發(fā)現(xiàn)只需要配置一行規(guī)則,就可以輕松的調(diào)出控制臺調(diào)試真機的h5頁面,這就是Weinre控制臺。具體效果如下圖,這里為了方便展示,真機調(diào)試就用pc端模擬手機代替(真實調(diào)試的時候,需要先實現(xiàn)上述的手機抓包,即手機電腦在同一網(wǎng)絡下,并且修改手機wifi的代理。)。可以看到左側(cè)并不是瀏覽器自帶的控制臺,而是whistle自帶的功能,在視察與修改左側(cè)元素時,我們手機上的內(nèi)容也會隨之改變。

          那么如何實現(xiàn)上面的效果呢?

          我們只需要在Whistle控制臺左側(cè)的Rules中添加一條規(guī)則即可。

          ${監(jiān)聽的網(wǎng)址} weinre://${實例名稱} 這個實例名稱是工具欄中Weinre下拉框中的名字可以任意起

          https://juejin.cn/ weinre://juejin

          點擊工具欄中Weinre下面的juejin即可跳轉(zhuǎn)到Weinre控制臺頁面,再刷新下監(jiān)聽網(wǎng)址的頁面即可審查元素。

          借助Weinre控制臺,我們可以更加容易的解決真機兼容性問題。

          篡改響應

          修改響應體還是很常用的,例如修復bug的時候,如果懷疑是接口返回值有誤導致的問題,就可以通過修改響應體,來排查到底是不是后端的問題。

          在調(diào)試接口的時候,例如后端接口新增了一個返回值,我們需要根據(jù)這個返回值進行相應的邏輯處理,這時候我們也可以通過修改響應體的方式mock一下新增的字段,只要確保自己mock的結果和接口返回的結構一樣,就可以提前完成接口聯(lián)調(diào)。

          具體做法:

          前半段是請求地址(支持正則匹配) 后半段是響應體的文件。file://${路徑} 默認找的是Values下文件。

          Ctrl+右鍵點擊橘色的路徑,會自動跳轉(zhuǎn)到Values下對應的文件里,如果沒有會自動創(chuàng)建非常方便。

          mock.json

          可以看到 加完配置之后對應接口的響應體就變成了mock.json里面的內(nèi)容。

          解決跨域

          解決跨域是篡改響應的一種應用,有的后端接口沒有配置CORS,導致前端接口跨域

          歷史解決:通過vite 或者 webpack 等工具做一個反向代理

          通過Whistle的resHeaders可直接修改跨域接口的響應頭,增加cors 配置

          /getList/ resHeaders://{cors}

          # cors 文件
          access-control-allow-credentials: true always
          access-control-allow-headers: *
          access-control-allow-methods: GET, PUT, POST, DELETE, HEAD, OPTIONS
          access-control-allow-origin: *
          access-control-expose-headers: *
          access-control-max-age: 18000L
          content-type: application/json
          date: Fri, 02 Dec 2022 04:00:28 GMT
          server: 123123
          Access-Control-Allow-Origin: *

          當然功能遠不止這些,還可以 篡改 API響應時間、HTTP響應狀態(tài)碼等。。。

          篡改請求

          可以使用reqMerge修改修改請求體,它會把merge.json文件的請求體合并到原本接口的請求體中。

          /savePerson/ reqMerge://{merge.json}

          # merge.json
          {
          name:'張三'
          }

          jsPrepend 進行js注入

          使用jsPrepend可以在目標網(wǎng)址的srcipt中添加任意的js代碼。我們這里向頁面中注入一個Vconsole移動端調(diào)試工具。${注入到哪個地址} jsPrepend://${注入的js路徑}

          https://juejin.cn/ jsPrepend://https://cdn.jsdelivr.net/npm/[email protected]/eruda.min.js
          https://juejin.cn/ jsPrepend://{test.js}

          test.js

          var vConsole = new window.VConsole();

          打開控制臺可以發(fā)現(xiàn),我們注入的js被添加到了head的最頂部。

          VConsole成功顯示到了頁面上

          域名映射

          # 可以一個ip 配置多個域名 并且支持端口號
          127.0.0.1:9000 ddd.com aaa.com

          文檔

          whistle文檔

          結尾

          頭一次接觸到抓包工具,感覺打開了新世界的大門。使用whistle,以后不管是開發(fā)mock接口數(shù)據(jù),還是定位bug都方便了很多。

          希望大家能有所收獲!

          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国国产毛片 | 看a片网址 | 国产精品九九视频 | 亚洲欧洲a片 | 波多野结衣一区久久在线观看 |