1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        手把手教你接入前端熱門抓包神器 - whistle

        共 5158字,需瀏覽 11分鐘

         ·

        2021-03-11 18:12

        whistle 是一個基于 Node.js 的跨平臺網(wǎng)絡(luò)調(diào)試工具。最近隨著 Nohost 的開源,有不少同學(xué)問了 whistle 相關(guān)的問題,本篇文章將結(jié)合幾個常見的業(yè)務(wù)場景介紹如何在本地前端項目開發(fā)中使用 whistle 。


        一、使用webpack devServer的項目

        項目準(zhǔn)備

        如今,大部分的前端項目是以 webpack 作為開發(fā)和構(gòu)建工具進(jìn)行項目開發(fā)的。我們將以這樣一個最常見的場景,即以 webpack 開啟本地 devServer 進(jìn)行開發(fā)和調(diào)試的方式,展示如何在這樣的前端項目中結(jié)合使用 whistle 。

        我們以一個 create-react-app 開啟的項目為事例來進(jìn)行展示。首先,假定有一個以 create-react-app 新建的,名為 my-app 的前端項目:

        create-react-app my-app
        cd my-app
        npm run start

        會在瀏覽器中開啟一個 localhost:3000 的 tab,這是我們常見的一個本地前端開發(fā)的場景。


        本地 host 的弊端

        一般情況下,我們可以直接在 localhost 下進(jìn)行本地的調(diào)試開發(fā)。但是,基于 localhost 的本地開發(fā)有不少局限性:

        • 用戶身份相關(guān)的部分功能,如登陸功能,cookie 讀取等對客戶端的域名有限制,使用 localhost 這個 host 可能會遇到限制。

        • 使用 localhost 進(jìn)行本地開發(fā),業(yè)務(wù)代碼中可能需要進(jìn)行一些額外的邏輯判斷,如針對本地域名和線上域名做行為區(qū)分等。


        配置 whistle

        為了解決上述問題,根據(jù)我們的實(shí)踐經(jīng)驗,本地開發(fā)時,通過線上真實(shí)域名訪問本地前端項目,似乎是一種更加有效的開發(fā)方式。

        假設(shè)我們這個本地項目的線上真實(shí)域名為 qq.ketang.com ,則我們的目標(biāo)即是通過 qq.ketang.com 訪問和調(diào)試本地的 my-app 前端項目。

        下面我們將演示如何使用 whistle 實(shí)現(xiàn)這個目標(biāo)操作。

        1、配置 whistle 規(guī)則

        打開 whsitle 的規(guī)則配置地址 127.0.0.1:8899 , 依次進(jìn)行如下操作:

        -> 選擇 Rules 選項卡

        -> 雙擊開啟 Default 配置(其后方出現(xiàn)綠色的打勾即為開啟成功)

        -> 在右側(cè)規(guī)則編輯面板中輸入以下規(guī)則

        qq.ketang.com/  http://127.0.0.1:3000/

        -> 選擇 Save


        2、啟用 proxy

        選擇 SwitchyOmega 插件的 proxy 模式

        隨后,在瀏覽器中訪問地址 https://qq.ketang.com, 就能成功訪問到我們本地的 my-app 項目了。

        現(xiàn)在,我們就可以用項目的線上地址來調(diào)試本地項目,而不用使用 127.0.0.1:3000 這樣的本地地址了。


        whislte 做了什么

        這其實(shí)是 whislte 中的配置規(guī)則起了作用

        qq.ketang.com/  http://127.0.0.1:3000/

        這條規(guī)則將所有 qq.ketang.com/及其子路徑下的請求轉(zhuǎn)發(fā)到了http://127.0.0.1:3000/下。

        whistle 的強(qiáng)大功能之一就是提供了各種模式的規(guī)則匹配以應(yīng)對前端開發(fā)中的不同場景,上面這條,只是一條最簡單的規(guī)則。

        如果你想現(xiàn)在就對 whistle 的配置規(guī)則有個更全面和清晰的認(rèn)識,可以參考以下鏈接:

        # whistle 配置方式
        https://wproxy.org/whistle/mode.html

        # whistle 規(guī)則的模式匹配
        http://wproxy.org/whistle/pattern.html

        即使你有沒細(xì)細(xì)翻閱又或者沒有很好地理解 whistle 的配置規(guī)則也沒關(guān)系,下面我們將繼續(xù)以這個項目為例,結(jié)合幾個常見的開發(fā)場景,告訴開發(fā)者應(yīng)該如何配置常見的 whislte 規(guī)則。


        忽略子路徑下的 cgi 接口轉(zhuǎn)發(fā)

        在我們的 my-app 項目中,如果項目中涉及到同域下子路徑的后端接口,如qq.ketang.com/cgi-proxy/xxxxx ,我們的初衷是 cgi 接口不需要轉(zhuǎn)發(fā),依然走線上即可。

        但是如果按照目前的配置,該 cgi 接口也會被轉(zhuǎn)發(fā)至本地的相應(yīng)路徑,這顯然不是我們希望看到的結(jié)果。

        # bad, 不是我們所希望的
        # qq.ketang.com/cgi-proxy/xxxxx 也會轉(zhuǎn)發(fā)至 http://127.0.0.1:3000/cgi-proxy/xxxx
        qq.ketang.com/  http://127.0.0.1:3000/

        此處需要使用 excludeFilter 規(guī)則:

        # good,使用excludeFilter規(guī)則, 路徑匹配
        # qq.ketang.com/cgi-proxy/ 及其子路徑下的請求不會被轉(zhuǎn)發(fā)至 http://127.0.0.1:3000/cgi-proxy/
        qq.ketang.com/  http://127.0.0.1:3000/ excludeFilter://qq.ketang.com/cgi-proxy/

        以上我們在 excludeFilter 里采取的是路徑匹配,此外我們還可以采取通配符匹配或者正則匹配來實(shí)現(xiàn)這一功能:

        # also good, 使用excludeFilter規(guī)則, 通配符匹配
        # qq.ketang.com/cgi-proxy/, qq.ketang.com/cgi-bin/ ... 這類的請求都不會被轉(zhuǎn)發(fā)
        qq.ketang.com/  http://127.0.0.1:3000/ excludeFilter://^qq.ketang.com/cgi-*

        # also good, 使用excludeFilter規(guī)則, 正則匹配
        # qq.ketang.com/cgi-proxy/, qq.ketang.com/cgi-bin/ ... 這類的請求都不會被轉(zhuǎn)發(fā)
        qq.ketang.com/  http://127.0.0.1:3000/ excludeFilter:///^\w+://qq\.ketang\.com/cgi-/

        有讀者可能會疑惑,為什么以上正則匹配中的//qq 的//沒有轉(zhuǎn)義,這是因為在 whistle 內(nèi)部實(shí)際上是調(diào)用了new RegExp 的方式進(jìn)行構(gòu)造正則,已經(jīng)自動做了轉(zhuǎn)義,如果不放心,那么寫成 //qq 也可以。

        關(guān)于模式匹配的具體規(guī)則可以參考官方文檔:

        # whistle 規(guī)則的模式匹配
        http://wproxy.org/whistle/pattern.html


        特定 cgi 接口的 mock

        一個常見的場景是我們需要對某個 cgi 接口的返回數(shù)據(jù)進(jìn)行改造以模擬前端的多種 case ,whistle 有多種方式可以幫助開發(fā)者實(shí)現(xiàn)該功能。

        假設(shè)有一個 cgi 接口路徑為/cgi-proxy/getMyName, 則本地 mock 的方式有

        • 以本地文件作為響應(yīng)

        # qq.ketang.com/cgi-proxy/getMyName 以本地的//User/dug/test/getMyName.json文件作為響應(yīng),
        qq.ketang.com/cgi-proxy/getMyName  file:///User/dug/data/getMyName.json


        • 編輯在線文件作為響應(yīng)

          如果不想用本地文件,也可以直接用 whistle 提供的在線文本功能。在 whislte  的配置界面中:

        ->選擇 “Values”

        ->點(diǎn)擊 “Create”, 輸入自定義的文件名(此處為ans.json)

        ->選中新建的文件,在右側(cè)的編輯欄中輸入作為響應(yīng)的內(nèi)容

        # qq.ketang.com/cgi-proxy/getMyName 以Values面板中的ans.json作為響應(yīng)
        qq.ketang.com/cgi-proxy/getMyName  file://{ans.json}


        • 使用 xfile 模式

        xfile 模式和上述的 file 模式功能基本一致,xfile 和 file 的唯一區(qū)別是 file 找不到對應(yīng)文件返回404,而xfile則是繼續(xù)請求線上資源。

        # xfile和file基本功能一致,只是若找不到對應(yīng)文件,xfile將會繼續(xù)請求線上資源
        qq.ketang.com/cgi-proxy/getMyName  xfile://{ans.json}



        二、無構(gòu)建工具的傳統(tǒng)前端項目

        不少老的項目由于種種原因沒有使用構(gòu)建工具來構(gòu)建前端 JS,CSS 等前端資源。對于這種項目,我們希望用本地的對應(yīng)資源來進(jìn)行開發(fā)和調(diào)試。

        比如,在我們現(xiàn)在需要對一個老項目進(jìn)行迭代,項目的線上域名為qq.ketang.com, 這次改動主要涉及到以下兩個文件:

        <!-- index.html -->
        ...

        <link rel="stylesheet" href="/assets/css/main.css" type="text/css">
        ...
        <script src='assets/js/module/my.js'>

        在 whislte 中,我們需要配置規(guī)則:

        # 分別將線上的css和js的訪問 指向本機(jī)的項目路徑

        qq.ketang.com/assets/css/ xfile:///User/dug/myWork/ketang_pro/assets/css/

        qq.ketang.com/assets/js/  xfile:///User/dug/myWork/ketang_pro/assets/js/

        之后,我們在瀏覽器訪問 qq.ketang.com,其中對于/assets/css/ 和/assets/js/路徑下的請求將會以本地項目目錄下的對應(yīng)文件響應(yīng),然后我們就能在本地修改和調(diào)試項目代碼了。


        三、以插件支持特殊的需求場景

        有一些特殊的應(yīng)用場景,依靠 whistle 的基礎(chǔ)功能可能無法實(shí)現(xiàn)。

        但是,whistle 支持自定義插件來拓展功能,同時社區(qū)也有一些插件的積累。

        例如,假設(shè)項目中有一個 combo 的 url 請求為http://i.cdn.com/??x.js,y.js,z.js 。通過社區(qū)的 whistle.combo 插件可以實(shí)現(xiàn)將 combo url 切割成數(shù)組[x.js, y.js, z.js]并分別組合成 http://i.cdn.com/x.js, http://i.cdn.com/y.js, http://i.cdn.com/z.js

        關(guān)于插件 whistle.combo 詳見

        # whisle.combo
        https://github.com/whistle-plugins/whistle.combo

        另外,這里有一份 whistle 的插件集合,可以在里面搜尋是否有滿足自己需求的插件。

        # whislte 插件列表
        https://github.com/whistle-plugins


        愛心三連擊

        1.看到這里了就點(diǎn)個在看支持下吧,你的在看是我創(chuàng)作的動力。

        2.關(guān)注公眾號腦洞前端,獲取更多前端硬核文章!加個星標(biāo),不錯過每一條成長的機(jī)會。

        3.如果你覺得本文的內(nèi)容對你有幫助,就幫我轉(zhuǎn)發(fā)一下吧。




        瀏覽 94
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            黄色福利| 日韩AV乱伦| A级视频免费观看| 中文字幕无码精品三级在线欧美| 欧美亚洲国产精品| 亚洲中文字幕av| 影音先锋自拍| 国产亚洲欧美在线| 婷婷久久综| 国产真实乱婬A片三区高清蜜臀| 成人精品一区二区区别解析| 婷婷伊人中文字幕| 国产污视频在线观看| 亚洲高清毛片一区二区| 在线91网站| 青娱乐亚洲精品视频| 中文字幕的色| 91精品国产成人观看| 波多野结衣一区| 亚洲黄片免费观看| 丁香婷婷一区二区三区| 麻豆午夜成人无码电影| 青青色在线观看| 俺来也俺去也www色官网| 抽插免费视频| 我爱大香蕉| 久久综合17p| 骚逼日本| yjizz国产| 亚洲黄色视频在线免费观看| 三级av网站| 91久久久精品| 国产免费观看av| 黄色片大香蕉| 欧美一级黄色性爱视频| 欧美怡春院| 无码视频播放| 亚洲无码偷拍| 玖玖在线视频| AAA黄片| 江苏妇搡BBBB搡BBB| 欧美激情综合色综合啪啪五月| 在线观看禁无码精品| 高H视频在线观看| 中文字幕+乱码+中文字幕在线| 91人妻人人澡人人爽人人精品乱 | 美女一级变态毛片| 日韩欧美综合| 丁香五月天婷婷| 国产乱子伦日B视频| www.骚逼| 日韩欧美激情| 高清无码三级片| 91九色口爆吞精| 久久久网站| 加勒比综合在线| 日韩欧美国产高清91| 国内操逼| 国产超碰在线| 国产97视频| 黄色片在线播放| 97精品| 丁香五月网| 成人视频网站在线观看| 五月丁香六月激情| 色交视频| 日韩性爱视频| 招土一级黄色片| 在线观看av网站中文字幕| 中文字幕国产| 国产系列每日更新| 日本伊人在线综合视频| av久| 日P免费视频| 欧美精品在线免费| AV天堂小说网| 男人的天堂视频在线观看| 黄色网址在线观看视频| 亚洲色伦| 操碰在线观看| 免费在线观看视频a| 免费无码婬片AAAA片在线蜜芽 | 日韩不卡在线| 日韩高清国产一区在线| 黄网国产手机在线观看| 亚洲高清国产欧美综合s8| 98在线++传媒麻豆的视频| 最新中文字幕视频| 佐山爱人妻无码蜜桃| 久久成人在线视频| 亚洲一区无码在线观看| 欧美+日产+中文| 日韩一级在线免费观看| 嫩草导航| 日韩精品成人免费观看视频| 俺也去网站| 国产传媒_色哟哟| 特級西西444WWw高清大膽| 超碰天天| 国产精品96久久久| 欧美另类视频| 在线中文字幕网站| 污网站在线观看| 褒姒AV无玛| 一区二区Av| 日韩无码123区| 欧美三级欧美一级| 国产三级性爱视频| 国产不卡一| 91狠狠色丁香婷婷综合久久精品 | 黄色电影A| 97人人精品| 人妻成人网| 中文字幕AV无码| 欧美不卡一区| 91精东传媒果冻传媒| 欧美曰皮免费看| 无码不卡视频在线| 久久日精品| 操b视频在线播放| 伊大香蕉| 国内精品一区二区三区| 国产精品成人在线| 爱逼AV| 北条麻妃无码在线播放| 91成人免费视频| 日韩欧美综合一区| 自拍视频在线| 国产91在线拍揄自揄拍无码九色| 人人干超碰| 婷婷欧美日韩| www.俺去了| 2017天天干| 久久丝袜| 欧美视频在线观看| 免费中文字幕视频| 日韩一区二区三区在线视频| 91在线观看网站| A片在线观看网站| 亚洲免费毛片| 99热r| 黄页网站在线免费观看| 国产aa| 亚洲综合免费观看高清完整| 手机无码在线播放| 特级444www| 一本无码中文字幕| 久久草大香蕉| 嫩BBB搡BBB槡BBB小号| 欧美精品性爱| 奶头和荫蒂添的好舒服囗交漫画 | 精品乱码一区| 中文字幕高清视频| h视频免费看| 国产一级a一片成人AV| 国产男女啪啪视频| 啊啊啊国产| 91久久久久| 成人肏逼视频在线| 日韩中字无码| 国产avwww| 欧美一级视频在线观看| 久久久久亚洲AV成人网人人软件| 国产精品内射婷婷一级二| 欧美日韩中国操逼打炮| 久草中文在线视频| 国产一区二区不卡亚洲涩情| 杨晨晨不雅视频| 亚洲无码日| 一本久道视频一本久道| 综合激情AV| 国产91在线亚洲| 波多野结衣无码视频在线观看| 看一级黄色毛片| 亚洲日韩在线视频播放| 91丨九色丨熟女泻火| 搡中国东北老女人视频| 国产免费AV片| 正在播放亚洲| 亚洲视频天天射| 一区二区无码精品| 麻豆国产精品| 爱搞搞就要搞| 操逼电影免费| 屁屁影院CCYYCOM国产| 国产精品美女视频| 无码A区| 人妻精品一卡二卡| 欧美三区四区| 欧美操逼在线| 亚洲无码成人在线| 成人网在线观看| 亚洲自拍天堂| 天天看天天爽| 中文字幕在线视频免费观看| 欧美成人视频网站| 人人爱人人妻人人操| 成人福利视频在线| 蜜桃av秘无码一区三| 午夜AV无码| 美日韩视频欧美一区二区视频| 日日综合网| 久久一二三四| 成人激情五月天| 国产av一区二区三区| 国产一区二区免费在线观看| 久久H| 波多野结衣av在线播放| 日韩AV一区二区三区| 爱爱高清视频| 粉嫩av在线| 日韩av毛片| 日韩高清在线观看| 国产一区2区| 夜夜操夜夜| 北条麻妃无码视频在线观看| 久久久久久久| 欧美试看| 91超碰久久在线| 蜜臀一区二区三区| 国产女人操逼视频| A级免费视频| 91欧美精品| www.男人的天堂| 夜夜操狠狠操| 欧美特大黄| 人妻综合网| 水果派解说A∨无码区| 国产aaaaaaaaaa| 精品免费国产一区二区三区四区 | 人人摸人人操人人爽| 国产成人精品免费看视频| 91人人妻人人澡| 无码中文字幕| 国产日韩一区二区三免费高清| 国产成人无码精品久在线观看| 日日操视频| 69堂在线观看| 日产精品久久久一区二区| 国产三级片在线免费观看| 男人AV网| 91原创国产内射| 亚洲无码成人片| 欧美日韩在线观看视频| 18禁AV在线| 最近中文字幕在线中文字幕7| 久久精品福利视频| 国产欧美一| 国色天香网站| h片在线| 香蕉av在线| 色乱视频| 欧美视频在线观看免费| 蜜芽av在线观看| 激情五月婷婷色| 91在线无码精品秘入口| 色五月婷婷丁香五月| 波多野吉衣高清无码| 黄片视频网站| 亚洲国产成人在线| 欧美日韩中文字幕在线视频| 影音先锋男人资源站| 丁香婷婷久久久综合精品国产| 五月天婷婷影院影院| 色婷婷亚洲综合| 大香蕉网站在线观看| 国产愉拍91九色国产愉拍| 日韩五月天| 国产老熟女高潮毛片A片仙踪林| 日韩精品成人av| 欧美成人a片| 中文大香蕉视频| 日韩久久中文字幕| 欧美草逼视频| 天天干天天色天天射| 日本人妻在线视频| 丰滿老婦BBwBBwBBw| 久久高清亚洲| 99精品在线观看视频| 亚洲色婷婷| 日本豆花视频| 国产欧美精品一区二区色综合 | 日韩无码网| 亚洲AA视频| 黄色小网站在线观看| 4080yy午夜理论片成人| 日本黄色视频免费| 38t6电影网logo高清图片| 亚洲最新在线视频| 熟女综合网| 国产一级免费视频| 久久亚洲一区| 日韩无码黄片| 中文字幕一区三区三A片密月| 久操久| 久久高清无码视频| 无码国产精品一区二区性色AV | 激情五月天色色| 另类老太婆性BBWBBw| 人妻无码一二三区免费|