一、前言
眾所周知,市面上有很多出名的抓包工具,比如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 書寫針對某個規則的響應