20

On Linux I'm starting chrome as google-chrome --proxy-server=127.0.0.1:8888 --proxy-bypass-list="" however it's still not using the proxy for localhost requests.

How can I force chrome to use my proxy for localhost?

You may wonder why I wanna do this, I'm trying to record all the requests, using jmeter, to an application running on local environment.

Filipe Giusti
  • 303
  • 1
  • 2
  • 7
  • 1
    Have you checked this question and its answer and comments: https://superuser.com/questions/646304/google-chrome-cant-access-localhost-domains – music2myear Mar 28 '19 at 23:40
  • And this one: https://stackoverflow.com/questions/30467573/chrome-localhost-does-not-work – music2myear Mar 28 '19 at 23:42
  • @music2myear thanks for pointing it out, however those are not related to my problem. I can access localhost, I'm trying to access it through a proxy, which seems chrome bypasses it by default without any way to not bypass. – Filipe Giusti Mar 31 '19 at 20:49
  • In your question you are not accessing local host THROUGH a proxy, you are accessing a proxy ON localhost. There is a significant difference, and both those questions deal with proxies on localhost, which is what your question described. Either re-write your question to clarify what you are asking, or re-read the linked questions again. – music2myear Apr 01 '19 at 15:24
  • _you are not accessing local host THROUGH a proxy_ exactly, so how can I make this happen? _you are accessing a proxy ON localhost_ yes, that's correct. Rephrasing, I wanna access a server in localhost through a proxy in localhost. I had re-read the linked questions, they still aren't related to my problem. Please enlighten me, how can I make my question more clear? – Filipe Giusti Apr 02 '19 at 17:05
  • I have the same problem, none of the above links helped. The local machine is Windows, the remote is Ubuntu. The proxy connection is tunneled through SSH. I can access the remote `127.0.0.1` using `curl --proxy` on the local Windows machine, but on the same machine neither Firefox nor Chrome can access the remote `127.0.0.1` through the proxy. The interesting thing is that this worked some moths ago, then stopped working. First I though it's an issue with the remote server, but since the local `curl --proxy` works I'm sure it's a browser or OS problem. – Crouching Kitten Jun 15 '19 at 23:23

4 Answers4

7

Finally I've found a tricky solution for this. It was clear from the beginning that this is a browser issue, since I was able to make requests with curl --proxy.

The trick is that the DNS resolution also happens through the proxy, therefore on the remote machine. So just add a new entry to your remote /etc/hosts file:

127.0.0.1       local

Then you can access the remote "localhost" on your local machine, since Chrome knows nothing about this new host name. For example by: http://local:8080/mysite.

4

You were almost there, but the answer lies in the Chromium docs for the bypass option you were using. You need to subtract the defaults by adding a dash in front of whatever you want to remove, which in this case is the loopback interface, which is literally written <loopback>.

Whereas regular bypass rules instruct the browser about URLs that should not use the proxy, this rule has the opposite effect and tells the browser to instead use the proxy.

The full parameter is --proxy-bypass-list="<-loopback>"

A little bit unfortunate that this is not mentioned or linked up from the Network Settings page for Chromium ...

oligofren
  • 1,188
  • 21
  • 38
2

For Windows10, this is a System issue, that localhost will always goto current PC, and won't go through proxy.

U can set this in the OS's proxy setting to force localhost go proxy.

  • Open the OS's proxy setting
  • Ensure your proxy server(host & port) are set.
  • Below, there will be a input for you, says Use the proxy server except for address that start with the following entries. Use semicolons(;) to separate entries
  • Add <-loopback> into that input.
  • Save.

Then your request of localhost to go under proxy.

Note:

  • Though broswers will bypass localhost by default, the CMD will work even without this setting. curl -x http://{proxyserIp}:{proxyPort} http://localhost:3000
  • If u r using some browser extension(like SwitchyOmega), u can also add <-loopback into it's Bypass list, this still works.

refer: 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

Chen Tian
  • 31
  • 3
-1

If you are using mitmproxy or charles to debug localhost requests, try using Chrome 69 in macos with system proxy set.