在 Linux 上,我啟動了 chrome,google-chrome --proxy-server=127.0.0.1:8888 --proxy-bypass-list=""
但它仍然沒有使用本機主機請求的代理程式。
如何強制 chrome 使用本機主機代理程式?
您可能想知道為什麼我想這樣做,我試圖使用 jmeter 記錄對本地環境上運行的應用程式的所有請求。
答案1
你快到了,但答案位於 Chromium 文件中的繞過選項你正在使用。你需要減去預設值是在要刪除的內容前面加上破折號,在本例中是環回接口,字面意思是<loopback>
.
雖然常規繞過規則會指示瀏覽器不應使用代理的 URL,但此規則具有相反的效果,並告訴瀏覽器改為使用代理。
完整參數為--proxy-bypass-list="<-loopback>"
有點不幸的是,這一點沒有被提及或連結到Chromium 的網路設定頁面…
答案2
最後我找到了一個棘手的解決方案。從一開始就很明顯這是一個瀏覽器問題,因為我能夠使用curl --proxy
.
訣竅在於 DNS 解析也是透過代理程式進行的,因此是在遠端電腦上進行的。因此,只需在遠端/etc/hosts
文件中新增一個條目即可:
127.0.0.1 local
然後您可以存取本機上的遠端“localhost”,因為 Chrome 對這個新主機名稱一無所知。例如透過:http://local:8080/mysite
.
答案3
對於Windows10,這是一個系統問題,本機主機將始終轉到目前PC,並且不會通過代理程式。
您可以在作業系統的代理設定中進行設置,以強制 localhost 進行代理程式。
- 開啟作業系統的代理設定
- 確保您的代理伺服器(主機和連接埠)已設定。
- 下面將為您提供一個輸入,說
Use the proxy server except for address that start with the following entries. Use semicolons(;) to separate entries
- 加到
<-loopback>
該輸入中。 - 節省。
然後你的本地主機請求在代理下進行。
筆記:
- 儘管瀏覽器預設會繞過 localhost,但即使沒有此設置,CMD 也能正常運作。
curl -x http://{proxyserIp}:{proxyPort} http://localhost:3000
- 如果您使用某些瀏覽器擴充功能(例如
SwitchyOmega
),您也可以將其添加<-loopback
到它的中Bypass list
,這仍然有效。
參考: https://docs.microsoft.com/en-us/archive/blogs/fiddler/fiddler-and-the-ie9-release-candidate https://stackoverflow.com/questions/37700079/how-to-intercept-local-server-web-requests-using-burp-in-internet-explorer
答案4
如果您使用 mitmproxy 或 charles 來偵錯 localhost 要求,請嘗試在 Macos 中使用 Chrome 69 並設定係統代理程式。