如何让 Chrome 等软件在 Windows 下使用 ssh+.pac 代理

本文已过期!目前Chrome下已经有了 Proxy Switchy! 这个功能强大的代理插件可以实现全局 .pac 代理功能。

今天在 twitter 上看到 @roamlog 童鞋在问 windows 下如何用 .pac + ssh 代理 Chrome 。简单写一篇教程给买不起 vpn 的童鞋吧。

Chrome 在 Windows 下的代理机制

我们先要清楚 Chrome 的代理机制,Chrome 本身用的是 IE 的代理设置, 而 IE 代理本身是不支持 Socks 类型的代理,而只支持 HTTP 的。但 SSH 代理本身就是 Socks ,这就造成了.pac+ssh 在 Windows 下不起作用。那么我们要做的就是先把 Socks 代理转为 HTTP ,这就要用到 Privoxy 这个软件。

Privoxy 下载与设置

用过 Tor 的童鞋可能都见过与之捆绑的这个软件,对于没有用 Tor 的童鞋,可以在这里下载它的最新版本。安装完成后,运行它,我们会在任务栏托盘里发现这个蓝色的字母P的图标。右键点击它,在 “Edit” 中选择 “Main Configuration”,会在文本编辑器中打开一个 config 文件。在这里就可以对 Privoxy 进行设置。

按 Ctrl+F 搜索 “forward-socks5”,将这一行前面的 “#” 注释去掉,然后在后面填入你的 ssh socks 代理的 IP 和端口。如下图所示:

改好后,保存,关闭。这样你的 ssh 的 socks 代理就被会被转为 http 代理了。IP 及端口为 127.0.0.1:8118

配置 .pac 文件

.pac 文件有很多种写法,在这里分享一下我目前在用的:
var patterns = new Array(
//下面可以添加你需要用代理的网站地址,要注意格式,网址用英文半角双引号,除最后一个外,其它后面必须带半角逗号
"twitter.com",
"status.twitter.com",
"twimg.com”
);

function FindProxyForURL(url, host)
{
for (i in patterns)
{
if( url.indexOf( patterns[i] ) >= 0 )
{
return "PROXY 127.0.0.1:8118";
}
}
return "DIRECT";
}
把以上这段粘贴到文本编辑器里,比如 Windows 自带的记事本,保存为以 .pac 为扩展名的文件,比如 proxy.pac 。网址列表请自行扩充,我这里太多不宜的就不放上来了。须注意新添加了的网址只有在重启了 Chrome 后才能生效。

配置 IE 代理

控制面板 –>  Internet属性 –> “连接”选项卡 –> “设置”(如果是无线网请用“局域网设置”)中勾选 “自动检测设置”(据说可以防止 Chrome 用代理时的某个抽风问题 )和 “使用自动配置脚本”,在 “地址”一栏中填入刚才所保存的 .pac 文件的位置,比如 Lucifr 将这个文件 proxy.pac 存在了F:盘根目录下,那么就写成:file://f:/proxy.pac ,如下图:

大功造成!

这样完成配置之后,Chrome 也好 IE 也好,甚至是一些自身没有代理功能的 Twitter 客户端比如知名的 TweetDeck、Seesmic 等等 ,因为这些都是走的 IE 代理,就都可以使用 ssh 代理了,同时 Socks 代理也可以正常使用,对于拥有 SSH 但买不起 VPN 又有全局可过滤代理需求的的童鞋来说十分适用。

Ps. Chrome 建议使用最新的 dev 版本,ssh客户端建议用 MyEnTunnel。

Lucifr

Read more posts by this author.

Beijing, China http://lucifr.com