我安装了 Ubuntu 12.04,它运行良好。但我只遇到了一个问题,我通过大学的代理连接到互联网,但有些 URL 不需要代理,所以我的问题是:如何在 Ubuntu 上从代理配置中免除 URL?
答案1
您可能需要代理配置脚本 (PAC)。这是一个通用解决方案,适用于任何 DE、任何平台和任何浏览器。
在您的代理设置中(在浏览器中或从Network
Unity 中),选择“自动代理配置 URL”并输入路径/home/<Your-user-name>/proxy
或其他方便的路径。
打开文本编辑器(在 Dash 中搜索 gedit - 默认文本编辑器)并输入类似以下内容。完成后,将其保存到上面输入的路径。根据您的需要进行修改。
function FindProxyForURL(url, host)
{
// Loopback and localhost goes browser direct always.
var reip;
if ((host == "localhost") ||
(shExpMatch(host, "localhost.*")) ||
(shExpMatch(host,"10.*")) ||
(shExpMatch(host,"172.16.*")) ||
(shExpMatch(host,"192.168.*")) ||
(shExpMatch(host,"144.16.128.*")) ||
(host == "127.0.0.1")) {
return "DIRECT";
}
// Local Sites
if (dnsDomainIs(host, ".example.com") ||
dnsDomainIs(host, ".qwerty.org")) {
return "DIRECT";
}
// Test to see if host is an IP address
// Put any ranges you want to skip proxy here.
reip = /^\d+\.\d+\.\d+\.\d+$/g;
if (reip.test(host)) {
if (isInNet(host, "10.0.0.0", "255.0.0.0") ||
isInNet(host, "172.16.0.0", "255.255.0.0") ||
isInNet(host, "144.16.128.0", "255.255.240.0") ||
isInNet(host,"192.168.0.0", "255.255.0.0")) {
return "DIRECT";
}
}
// Default to proxy.
return "PROXY <server>:<port>";
}
如您所见,PAC 脚本可以进行复杂的配置。上述脚本会跳过任何类型为 *.example.com 和 *.qwerty.org 的地址以及任何与范围匹配的 IP 的代理。所有其他请求都通过代理服务器路由。
附言:到目前为止,我看到的所有 PAC 脚本的顶部和底部都有一个空行,因此我建议您在顶部和底部都添加一个换行符。以防万一……
答案2
如果您只是使用 http 代理,您可以打开 gconf-editor(sudo apt-get install gconf-editor
,如果您还没有)导航到system:http_proxy
并将您想要免除的 URL 添加到ignore_hosts
密钥中,我相信用逗号分隔。(见下图)
如果您使用的是 socks5 代理,则设置系统范围的代理会稍微复杂一些。但是对于某些单独的程序来说,这相当容易。例如,对于 Firefox,转到,edit:preferences:advanced:(connection)settings
然后将其从Use system proxy settings
或更改为Manual proxy configuration
,然后输入您的代理信息并在字段中添加您不想要的 URL No proxy for
,再次用逗号分隔。(见下面的屏幕截图)
如果您使用 Chromium,则可以使用命令行开关运行它,例如/etc/bin/chromium-browser --proxy-bypass-list="localhost,127.0.0.1,xxx.xxx.xx.etc" --proxy-server="socks5://localhost:1080"
。
tsocks
其他一些应用程序也具有类似的功能,而对于那些没有此功能的应用程序,您可以使用类似的包装程序。