一、前言
眾所周知,市面上有很多出名的抓包工具,比如Fiddler、Charles、wireshark、mitmproxy;這些抓包軟體都各有各的好處,不過今天小編不介紹這幾種抓包軟體,今天小編要為大家帶來的是阿里開源的一款抓包軟體-------LightProxy,翻譯過來就是光代理,聽名字就很牛X的樣子,下面我們一起來感受下光代理的魅力。
二、說明
很多人好奇,LightProxy是什麼語言寫的,其實它是用前端的Elctron來進行打包並生成的,而且他的部分代理是基於Whistle,Whistle也是和Fiddler一樣的抓包工具,只不過他是可以執行在nodejs上的抓包工具,設定起來更方便。那麼大家可能要問了,既然有了Whistle了,為啥還要用LightProxy,這不是多此一舉嗎,很顯然並不是,原因就在於,LightProxy有著更強大的功能,而且操作LightProxy絕對比操作Whistle要更簡單,而且LightProxy可以自動完成證書安裝和代理設定,讓開發人員能夠精確的掌握自己的開發環境,透過 代理使用規則轉發、修改每一個請求和響應的內容。
三、工具作用
- 抓包,包括無線場景抓包
- 實時 hosts 繫結
- 按規則轉發資源
- mock 介面,頁面等
- 修改請求和響應內容,例如在頁面中插入 script ,修改返回頭等
四、下載安裝使用
這裡我們先下載光代理,有兩個版本,地址如下:
mac:
https://url25.ctfile.com/f/34512525-533086562-939f08
(訪問密碼:7054)
window:
https://url25.ctfile.com/f/34512525-533084026-5ae437
(訪問密碼:7054)
當然,也可以使用git來下載,如下:
git clone https://github.com/alibaba/lightproxy
cd lightproxy
yarn run install-deps
yarn run dev
安裝都是傻瓜式的,這裡就不說了,下面小編啟動 LightProxy ,系統代理將自動設定為 LightProxy。單擊主介面上的 Whistle 選項卡,檢視 Whistle 提供的資料包捕獲介面,如圖:
當然了,光代理還支援手機代理,也就是無線代理,方法也很簡單,首先需要點選右邊手機代理的標籤(它會自動使代理在區域網上可見)。此時你可以看到一個二維碼(不同的機器有不同的二維碼,你需要掃描自己的二維碼) ,掃描二維碼下載相應的證書,並安裝它。
注意: LightProxy 預設情況下在區域網中不可見,您必須單擊移動代理選項卡在移動裝置上捕獲資料包以使區域網可見。安裝好後就可以抓到手機上的包了。
預設情況下,LightProxy 的代理設定僅在瀏覽器和 Webview 上生效。如果需要在命令列上生效(例如 curl 等) ,可以使用選單欄上提供的 copy shell 指令碼函式。
單擊後,代理命令將自動複製到剪貼簿。在 shell 中貼上和執行之後,諸如 curl 之類的命令將透過 LightProxy 的代理來執行。
例如,我們執行
export https_proxy=http://127.0.0.1:12888 http_proxy=http://127.0.0.1:12888 all_proxy=socks5://127.0.0.1:12889curl https://baidu.com -I
結果就是
HTTP/1.1 200 Connection EstablishedProxy-Agent: whistleHTTP/2 302server: bfe/1.0.8.18date: Fri, 19 Jun 2020 03:36:36 GMTcontent-type: text/htmlcontent-length: 161location: http://www.baidu.com/__lightproxy-host-ip__: 127.0.0.1__lightproxy-rules__: none__lightproxy-real-url__: https://baidu.com/__lightproxy-help__: See https://github.com/alibaba/lightproxy
應該注意的是,透過這種方式,只有讀取環境變數的應用程式將透過代理,並且不會對所有應用程式生效。
五、總結
總體來說,LightProxy 能夠讓開發者完全掌控自己的開發環境,用極低的成本定製自己的開發環境,而不是總是在等待依賴方按照自己的需求提供相應的環境。
甚至於,你可以自己用 NodeJS 書寫針對某個規則的響應