Leask

让 pac 文件修改后立即生效

Leask

ssh -D 和 VPN 是我认为目前最靠谱的翻墙方式了。
但是,他们都面临同一个问题,就是需要区分被墙与没有被墙的网站,以使用较快的方式访问所需要的站点。

我使用 VPN 的时候会使用 chnroutes 项目:http://code.google.com/p/chnroutes/
使用 ssh -D 的时候,我有自己的 .pac 文件,且我的 pac 文件修改很频繁。
于是怎么在不重启浏览器(或其他应用)的情况下,让新修改的 .pac 文件生效呢?
经过研究,发现只需要修改一下 .pac 文件的地址,浏览器就会重新加载代理脚本了。
但每次都在图形界面下干这活儿,实在太反人类了,于是,决定尝试写 shell:

Mac:

#!/bin/sh
pac="http://www.xxx.com/yyy.pac?time=`date +%s`";
networksetup -setautoproxyurl Wi-Fi "$pac";
# 你需要把 Wi-Fi 改为自己网络的 Service name

Linux with gnome:

#!/bin/sh
pac="http://www.xxx.com/yyy.pac?time=`date +%s`";
gconftool -s /system/proxy/autoconfig_url -t string "$pac";

Windows?

对不起,不用 Windows 好多年了。

Comments

  1. sink

    设计民工表示看不懂。。Mac 里直接在终端输入吗?包括 #! 号?

  2. Leask

    在终端输入也可以,但是要小改。 我文中的例子是做成shell脚本的。 Mac 基于 BSD,是 UNIX 的一个分支,感兴趣的话可以学习一下 BSD 的 Shell,很有趣的。 #代表注释。

  3. sink

    牛!只有遥远的膜拜一下了。 有适用于普通用户的办法么?比如拷贝你写好的 Shell,修改为自己网络的 Service name,保存成什么文件及扩展名,放到指定的目录让它运行

  4. 互联网战

    对不起,不用 Windows 好多年了,自己跟自己过不去吗?

  5. testmore

    windows一样可以 修改注册表即可