Unfortunately, there's no particularly clean solution. But there's a few ways to do it.
To start with, you'll need the ability to tell your browser to use proxy settings independent of the OS. With Firefox, this is easily accomplished via the normal Preferences UI - you can tell it to not use any proxy, or to use a specific (different) one. If you want a separate instance with its own proxy settings, you can use an additional profile - or use FoxyProxy to pick depending on the destination website. With Chrome, you'll need to pass it the --proxy-server
argument (while invoking it via the command line, or a shortcut with that argument).
The other, harder, part is getting the browser to bind to a particular interface. As far as I know, no major browser natively supports this action. There is an old tool called ForceBindIP, but I find that does not work reliably with modern browsers that use multiple processes. The OS only provides routing configuration by destination IP address, not by source program.
An alternative is to provide a separate (SOCKS) proxy that binds to the interface you want. Then you point the browser at this extra proxy. There are a few options for providing this proxy:
- WinGate (a fairly complex piece of software) is able to provide it natively.
- You can run a VM (Linux is lighter) that hosts a SOCKS proxy such as dante, and bridge the VM network adapter to the interface you want.
- You can run a VM as above, and host a SSH server. Then use a SSH client in Windows to provide the SOCKS proxy.
- You can use a remote machine as the proxy server (whether SOCKS directly, or SSH server). If you do this you will need to define a route on your client that tells it to use your unrestricted network for the proxy server's IP address.
Related Firefox featre request: https://bugzilla.mozilla.org/show_bug.cgi?id=651882