I want to apply proxy settings to a particular host only (e.g., ) in Mac OS X. How can I do it?
In System Preferences there are only options for bypassing proxy settings for particular hosts.
4 Answers
You can use the following proxy.pac file to send all traffic to apple.com through the proxy 1.2.3.4 while still going directly to all other hosts:
function FindProxyForURL(url, host) { PROXY = "PROXY 1.2.3.4" // Apple.com via proxy if (shExpMatch(host,"*.apple.com")) { return PROXY; } // Everything else directly! return "DIRECT";
}- Save this script as
proxy.pac(or any other name you like) on a web server. This can be a local web server (). This is required as of OSX Lion. - Go to the
System Preferences. - Select
Network. - Select the network you want to change (i.e. "WiFi").
- Click
Advanced...button. - Click
Proxiestab - Check
[x] Automatic Proxy-Configuration. - In the
URL:field, type in the URL to the file you've created in step 1., for example: . (note: local paths will not work in modern OSX) - Click
SaveandApply
Voila! Your own proxy-configuration
For more information on the format of the proxy.pac file have a look at as starting point.
Actually you can use the file:///path/to/file scheme for the URL, instead of having to rely on a web server.
For example:
file:///Users/youruser/var/proxy/proxy.pac 9 Adding to @heiglandreas's answer...
@jnbek's solution did not work on Mac OSX for me and I was looking for a simple solution.
So, I created a new folder and copied the pac file into that. Then, I started a simple web server on OSX on port 80 from that folder itself.
Just go into the folder & run this command. Please change the port from 80 to something else if its already occupied.
python -m SimpleHTTPServer 80
Now, I could easily get the proxy.pac file from . Or, for different port use: .
@Rehmat's answer is great, but it's not updated for python 3 and Mac OS X Big Sur:
Create a proxy.pac file in a new directory called proxy-web (in whatever parent directory you want):
function FindProxyForURL(url, host) { PROXY = "PROXY 1.2.3.4" // Apple.com via proxy if (shExpMatch(host,"*.apple.com")) { return PROXY; } // Everything else directly! return "DIRECT"; }Start a web server in that directory where your proxy.pac file is located
cd proxy-web ls # proxy.pac python -m http.server 80Open Apple -> System Preferences
Click Network
Select the specific network in question (ex: "Thunderbolt Ethernet" or "Wi-Fi")
Click Advanced
Select the Proxies tab
Check the Automatic Proxy Configuration box, input URL:
Click OK and Apply but do not close network settings
Test that it's working by going to apple in CHROME (not SAFARI -- for me, our corporate URLs and proxy did not seem to work in Safari but Chrome worked just fine): apple.com
Test in Safari. If it's not working click "Renew DHCP Lease" under the
Advanced → TCP/IPtab back in network settingsRun further tests in your favorite browser by going to non-apple URIs (ex: google.com). If you're proxying a specific subdomain, you'll also want to test other subdomains that are not supposed to be proxied.