33

Is it possible to disable/enable the proxy connection on a tab-by-tab basis in Firefox?

I can access the internet with the proxy enabled, and I can access our internal servers with the proxy disabled, but neither configuration allows the other.

I have a feeling that Firefox 4's per tab profiles may permit this, but was wondering whether there was a way to achieve this on Firefox 3.6.13, perhaps through the use of an extension.

For the moment I'm making do with quickProxy (not QuickProxy which I've just discovered while trying to find quickProxy) which allows me to switch the proxy on and off for the whole browser, but would prefer something more fine-grained.

Hennes
  • 65,804
  • 7
  • 115
  • 169
Rich
  • 2,241

7 Answers7

12

I recently discover this FireFox extension that might work for you:

https://addons.mozilla.org/en-US/firefox/addon/container-proxy/

this seems to allow you to configure a proxy per-container and you can certainly attach one or more tabs to the container as needed.

9

Another vote for FoxyProxy but I'll suggest using the PAC feature if your setup is complex. I have two proxy servers to choose from, but which one to choose gets very tricky sometimes. In order to setup FoxyProxy to use the PAC, go to the Proxy Details tab and select Automatic Proxy Configuration URL and enter something like file:///home/me/.myproxy.pac. Here's an example of a PAC file:

function FindProxyForURL(url, host)
{
   var DIRECT = "DIRECT";
   var PROXY = "PROXY myproxy.company.com:80";
   var LOCAL = "PROXY localhost:8118";

var rc = "";

// alert("My IP Address is: " + myIpAddress());

// special: DIRECT / localhost if (dnsResolve(host) == "127.0.0.1") { rc = DIRECT; }

// special: DIRECT / plain name (no domain name (i.e. no dots)) (e.g. http://foobar) // (must be local to where I'm at) else if (isPlainHostName(host)) { rc = DIRECT; }

else { // special: LOCAL / not at home & restricted hosts if ((dnsDomainIs(host, "frank.home.com")) || (dnsDomainIs(host, "firewall.home.com")) || (dnsDomainIs(host, "backupserver.home.com"))) { // determine if we're at home or not; home can resolve the laser printer var AT_HOME = (isResolvable("myprinter.home.com") ? true : false);

     if (! AT_HOME) {
        rc = LOCAL;
     }
     else {
        rc = DIRECT;
     }
  }

  // general: DIRECT / not at work
  else {
     // determine if we're at work or not; work can resolve proxy server
     var AT_WORK = (isResolvable("myproxy.company.com") ? true : false);
     if (! AT_WORK) {
        rc = DIRECT;
     }

     // ASSUMED: AT_WORK

     // special: LOCAL / at work & broken work links
     // (must use local proxy server to connect)
     else if ((host == "download.company.com") ||
              (host == "search.company.com") ||
              (host == "www.company.com")) {
        rc = LOCAL;
     }

     // general: DIRECT / at work & work intranet links
     else if ((dnsDomainIs(host, ".company.com")) ||
              (dnsDomainIs(host, ".companylocal.com")) ||
              (dnsDomainIs(host, ".legacycompany.com"))) {
        rc = DIRECT;
     }

     // general: DIRECT / at work & 192.168.*
     else if (isInNet(host, "192.168.0.0", "255.255.0.0")) {
        rc = DIRECT;
     }

     // default: go through LOCAL
     else {
        rc = LOCAL;
     }
  }

}

// alert("Proxy for {" + host + "} is: " + rc); return rc; }

Note that the above example is fairly inefficient as it will usually wind up with a DNS lookup on myproxy.company.com for every single HTTP connection; I hard-code AT_HOME and AT_WORK in the .pac file via an external program at boot time. But it's an example of how complicated you can make your PAC script, if you need to.

phuclv
  • 30,396
  • 15
  • 136
  • 260
0

If you use proxies by patterns you can create a list of IP addresses and it will automatically switch to the proxy

Ken
  • 1
-2

Why do you need the proxy on a per-tab basis? Does your dev environment reroute google.com to a LAN box or something?

Would it be good enough to automatically use the proxy for external sites (http://superuser.com), and not for internal sites (http://uri.to/internal/server)? If so then I'd say look into Joe's post about the PAC feature.

The "No proxy for:" box in the network configuration screen (that's what it's called in FF4 at least, I don't have FF3 installed here) is a way to do some of the same things without creating a PAC file. You can have it ignore your proxy for http://www.local.org, http://www2.local.org and 127.0.0.1 by using something like .local.org, 127.0.0.1

KJP
  • 250
-3

for anybody who is looking for a way... try SwitchyOmega a firefox extension

https://addons.mozilla.org/en-US/firefox/addon/switchyomega/

-3

Take a look at FoxyProxy. It has multiple configuration options. Not quite sure if it allows for configuring per-tab, but definitely can configure different proxy settings for different addresses. This way you could set up one proxy for internal servers (probably some network mask like 192.168.0.0/24) and another one for the Internet.

-3

I have been using FoxyProxy since a month as an add-on to Firefox and I am very much satisfied with its options. With this add-on you can configure multiple proxies; then add the URLs as White-list for the proxy you want it to use. Use wild cards when there are more matching URLs.

For e.g., you have Proxy1 and Proxy2, you want all Microsoft URLs to go through Proxy1 and all others to use Proxy2.

Here is what you need to do:

Edit the Default Proxy and give Proxy2 IP and port. Do not add any URL Pattern Create a Proxy as Proxy1 and give Proxy1 IP and port. In the URL Pattern add "*.microsoft.com*" (without quotes) as white-list. Then set FoxyProxy to "Use proxies based on their pre-defined patterns and priorities"

Hope this helps.