如何遠程斷點調試本地localhost項目


前言

對於一般開發網站的IDE自帶的服務器是都跑在 localhost 地址上的。(如下圖的asp.net)

image

 

而這種地址是只能在本機通過 localhost 或 127.0.0.1 地址訪問到,而無法直接通過本機的內網IP地址訪問的。

所以就無法實現在虛擬機中訪問本地localhost站點,以及在虛擬機訪問時的代碼斷點,調試,以及用手機訪問本地站點等。

雖然可以使用IIS等web服務器發布本地IP上,來實現外部訪問,但是依然無法實現代碼斷點,當然可以用附加進程調試,不是本文討論范圍。
接下來就來講解如何使用本機內網地址訪問localhost上運行的網站

實現思路

期望目標是:在虛擬機中訪問真實機的內網IP地址來訪問真實機中運行的localhost的站點。

遂,在真實機中開啟Fiddler,來充當虛擬機的代理服務器,去向真實機請求資源,同時由Fiddler修改虛擬機的請求報文,將虛擬機的Request請求報文中的真實機的IP地址改為localhost。

image

設置Fiddler

要用到的軟件只有一個,Fiddler,沒有的可以去官網下載:http://www.telerik.com/fiddler
進入Fiddler的Tools的FiddlerOptions...選項,Connections選項卡
勾選上“Allow remote computers to connect”選項,允許其他計算機連接

image


如果你的端口沒有被占用的話默認應該是 8888 端口

設定虛擬機的代理服務器

之后進入虛擬機,設置系統代理為當前真實機的IP的8888端口,推薦使用我之前文章中寫的“自動設置代理服務器批處理
設置完成后去查看設置情況, 10.0.1.11 是我的真實機的內網地址,端口8888。
 image

 

設置完成后從虛擬機訪問 真實機的IP+8888 端口,如果能顯示出FiddlerEchoService就說明代理沒問題。

image


此時在虛擬機中訪問百度已經可以被fiddler抓到了。
關於如何鑒別流量是本機的還是從遠程訪問的很容易,看Fiddler的Process列即可:

注意:本機流量可以追查到流量進程名及PID,而遠程流量是無法顯示進程的。

image

上圖第一條就是由火狐發出的請求,而下面的流量都是從虛擬機發出的請求,沒有進程名。

設置Fiddler自動化修改數據報文

現在從虛擬機已經可以通過我的真實機做代理向外訪問了,所以接下來需要從代理服務器Fiddler中修改數據包即可。
需要一款FiddlerScript Editor的軟件,可以從官網下載:http://www.telerik.com/download/fiddler/fiddlerscript-editor
關於FiddlerScript   的使用和介紹在之前的一篇文章中已經提到一些。

選擇跳轉至 OnBeforeRequest 函數。

通過右側的API文檔得知,oSession對象的屬性hostname表示不包含端口號的HTTPHeader的host字段值。

image


在此函數最后寫上如下代碼,目的是要在數據發來請求后修改數據報文,將指向本機的URL修改localhost地址。

image

保存后回到虛擬機。訪問10.0.1.11的localhost服務9527端口,可以發現,所有數據包都被修改為localhost地址
同時,我真實機上跑的localhost的服務也可以被內網其他計算機訪問了。

image

 

手機端訪問

前提是手機連接的wifi必須要和真實機在同一網段。
如圖,雖然連接了同一網段的wifi下,但不設置也是無法訪問的。

image

進入手機wifi設置,高級設置,代理設置,修改為“手動”
IP地址為我的真實機IP,10.0.1.11,
端口為Fiddler的監聽端口:8888

image

 

設置了代理服務器后,就可以順利通過IP地址訪問localhost的服務了,當然也可以同步加斷點,調試等。

image

注意事項

1,注意在使用過程中Fiddler不能關閉,關閉了就沒有代理服務器了。
2,注意在使用完成后,把代理服務器設置刪除,否則虛擬機/手機就無法正常上網了。

相關鏈接

工具下載(GitHub):

1、自動設置本機系統代理服務器.bat

2、刪除本機代理服務器設置.bat

其他文章:

1、利用Fiddler斷點功能,模擬網絡問題

2、[批處理]自動設置本機系統代理服務器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM