A pure web server for Proxy auto-config(pac)file
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE
README.md
gfwtest.js
ipac.js
sync_gfwtest.sh
template.pac

README.md

ipac

hi, 墙内的人!

首先了解什么是PAC文件:http://zh.wikipedia.org/zh/代理自动配置

ipac根据autoproxy2pac的最新规则生成pac文件,适用于各种平台(pc/mac/iPhone等支持PAC自动代理的系统),这样我们就可以「自动翻墙」了。

ipac是一个web server,类似于http://autoproxy2pac.appspot.com/,可以根据参数生成pac文件,但是昨天(2015-03-26)我使用的时候这个网站已经不能生成pac文件了,幸好还有一个gfwtest.js可以访问,所以ipac就是根据这个js文件生成pac格式文件的开源程序。

ipac并不是像goagent那样是一个代理软件,他只是一个规则,告诉系统(浏览器)什么时候用代理(翻墙),什么时候不用。如果你想翻墙,代理软件还是需要的。

##快速使用(图片版)

  1. 搭建一个代理服务器(以ssh为例) ssh socks代理
  2. 浏览器设置(以firefox为例) firefox 设置pac

##使用说明(文字版) 举个例子,我自己用一个美国的VPS当跳板,用ssh做代理。我在我自己的机器(iMac,ip:192.168.81.246)上,运行

ssh -o GatewayPorts=yes -D 7071 -NT user@example.com

这样本机的7071端口就是一个socks代理了。注意因为用了-o GatewayPorts=yes参数,所以其他机器(比如我的iPhone)也能访问iMac上的7071端口了。如果你使用了其他代理软件比如tor,最终也是得到一个可以当(socks或者http)代理的端口。

我们以firefox为例,如果此时在网络->设置->手动配置代理->SOCKS主机处填写192.168.81.246:7071(注意勾选远程DNS选项),那么此时firefox全局都是使用代理的,但是访问baidu/qq/淘宝之类的国内网站不想用代理,此时ipac就派上用场了!

在firefox中,我们选择网络->设置->自动代理配置(PAC)中填入

https://poiuy.me/socks192.168.81.246:7071

然后点击确定,这样firefox就能按需自动代理了。cool!

同样的,打开iPhone的设置->Wi-Fi->->HTTP代理->自动 填入

https://poiuy.me/socks192.168.81.246:7071

此时iPhone也能按需代理了。快来用Safari打开https://www.twitter.com试试吧!

上面的poiuy.me就是用ipac.js搭建的。我在一台美国的VPS上运行./ipac.js 80就启动了。ipac专门为cloudflare做了优化,如果在ipac.js中把第7行的useCloudflareHttps值设置为true,那么就会强制使用cloudflare的https,而且如果不是cloudflare的请求就直接拒绝,使PAC服务器更安全,更隐蔽。

##ipac支持的参数

https://poiuy.me/socks192.168.81.246:7071 #用192.168.81.246:7071的SOCKS代理
https://poiuy.me/proxy192.168.81.246:7071 #用192.168.81.246:7071的HTTP代理

所以其实只支持两个参数,socksproxy,后面跟的是ip:port。如果什么参数也不加,就返回(template.pac中定义的)默认代理SOCKS 127.0.0.1:7070,当然如果是自己运行的ipac,可以直接编辑template.pac修改。

##想添加自定义规则怎么办? 需要自己运行ipac.js,修改template.pac文件的myHosts变量,默认是追加hosts,可以通过-host来从gfwlist中减去某个host,比如"-v2ex.com"则对于gfwlist中的v2ex.com不用代理。

##chrome浏览器怎么使用 我可以负责任的告诉你,可以用!但是具体怎么用,请自行Google:Chrome pac文件Android pac文件ie pac文件等。

##我的服务器上运行了其他webserver,还可以跑ipac吗? 当然可以!ipac默认监听的是55555端口,比如你用nginx监听80端口,那么配置一个nginx的反向代理到127.0.0.1:5555即可。具体规则请Google:nginx 反向代理apache反向代理等。

##现在这么多pac生成项目,你再弄一个有什么意义? pac服务器,首先要保证能直接访问,不被墙。所以一个pac地址一旦出名,就会被墙,不如开源一个pac服务器,大家自建。可以用我们提供的,也可以自己本机搞一个,或者放在墙内的服务器上。

另外,如果你想分享自己的pac服务器,欢迎push过来。


One More Thing

ipac.js是用nodejs写的,所以你要想运行ipac.js,请在自己的机器上安装nodejs,比如:

  • yum install nodejs
  • apt-get install nodejs
  • brew install nodejs
  • ...

One More Thing, NO Kidding

##不越狱的iPhone也能用ssh翻墙 我们首先从App Store下载一个ssh软件,比如我用的是vSSH Lite,配置-D参数(端口转发/Port Forwarding->Dynamic),比如7070,那么iPhone的127.0.0.1:7070就是一个socks代理了。此时填入自动代理规则地址https://poiuy.me/就可以了。但是默认情况下,大约10分钟iPhone上的ssh客户端就会停止,需要手动切一下到前台。

另外vSSH还支持Accept all connections,相当于ssh的-o GatewayPorts=yes, 其他设备(你的iPad/android手机,甚至电脑)也能用vSSH的socks代理了。可以打开设置->Wi-Fi查看你的iPhone的IP。

##poiuy.me这个域名好奇怪啊 都是为了输入方便。poiuy是iPhone(或其他手机设备)字母键盘最上面一行,从右向左的前5个字母😄,所以输入一次就记住了。

##楼主我看了你的代码,感觉你的js写得很烂 楼主是专职做iOS(Objective-C)开发的,javascript还处于学习阶段,写得不好,请见谅。但是,你想,好歹,这个东西它跑起来了!👏

##目前可用的ipac服务器地址:

  1. https://poiuy.me/
  2. http://ipac.coding.io/
  3. 欢迎添加

##support

  • Join the chat at https://gitter.im/100apps/ipac