2013-01-30 20:38:07 +08:00
2013-01-30 14:31:41 +08:00
2012-12-23 14:18:48 +08:00
2012-08-25 11:11:06 +08:00
2013-01-29 12:56:34 +08:00
2012-12-30 21:53:54 +08:00
2013-01-28 23:09:17 +08:00
2012-12-31 23:39:54 +08:00
2013-01-29 14:29:58 +08:00
2012-12-18 21:13:37 +08:00
2013-01-30 14:31:41 +08:00

COW (Climb Over the Wall) proxy

COW 是一个 HTTP 代理服务器,它的目标是自动化翻墙,你可以将系统自动代理配置成 COW 提供的 PAC url之后就无需在多个代理配置间切换也无需编辑被墙网站列表。

功能

  • 自动检测网站是否被墙,仅对被墙网站使用二级代理
    • 二级代理可以是 SOCKS5 或 shadowsocks 代理
    • 对未知网站先尝试直接连接失败后使用二级代理重试请求2 分钟后再尝试直接
      • 避免误判使得直连网站总是使用二级代理
      • 特别适合暂时性被墙网站(如 Google
    • 内置常见被墙网站列表,减少检测被墙所需时间
    • 也可手工指定被墙和直连网站列表
  • 提供 PAC 文件
    • PAC 文件含可直连网站,让浏览器绕过 COW 直接访问得到最好的性能
    • 内置常见可直连网站,如国内社交、视频、银行、电商等网站
  • 将 SOCKS5 代理转为 HTTP 代理
    • 同时可以帮助执行 ssh 命令创建 SOCKS5 代理,断开后重连(需要公钥认证)
  • 支持 shadowsocks

安装

二进制文件

目前为运行在 x86 处理器上的的 OS X, Linux, Windows 提供二进制文件。二进制文件发布在 Google Code

在 OS X 和 Linux 上,可以使用下面的命令来下载二进制文件和样例配置(同时可用来更新):

curl -s -L https://github.com/cyfdecyf/cow/raw/master/install-cow.sh | bash

这个安装脚本在 OS X 上可以把 COW 设置为登录时自动启动。

从源码安装

安装 Go设置好 GOPATH,执行以下命令(添加 -u 选项来更新):

go get github.com/cyfdecyf/cow

使用说明

配置文件在 Unix 系统上为 ~/.cow/rcWindows 上为 COW 所在目录的 rc 文件。样例配置 包含了所有选项以及详细的说明,建议下载然后修改。

启动 COW

  • Unix 系统在命令行上执行 cow
  • Windows 上双击即可

PAC url 为 http://<listen address>/pac

命令行选项可以覆盖配置文件中的选项,执行 cow -h 来获取更多信息。

OS X 上登录时启动 COW

  1. 将源码中的 doc/osx/info.chenyufei.cow.plist 这个文件放到 ~/Library/LaunchAgents 目录
  2. 修改其中的 COWBINARY 为 COW 的路径

之后 COW 会在登录时启动,而且退出后会自动重启。

手动指定被墙和直连网站

~/.cow/blocked~/.cow/direct 可以用来指定被墙和直连网站:

  • 每行一个域名
  • 可以使用类似 google.com.hk 这样的域名

如果想记录经常访问的网站来提高性能,请参考样例配置中高级选项部分关于 updateBlockedupdateDirect 选项的说明。

COW 如何检测被墙网站

COW 将以下错误认为是墙在作怪

  • 服务器连接被重置 (connection reset)
  • 创建连接时超时
  • 服务器读操作超时

无论是普通的 HTTP GET 等请求还是 CONNECT 请求,失败后 COW 都会自动重试请求。(如果已经有内容发送回 client 则不会重试而是直接断开连接。)

用连接被重置来判断被墙通常来说比较可靠。超时则不可靠,尤其是网络连接差的情况下直连网站也会有很多超时。这是 COW 默认配置下检测到被墙后,过两分钟再次尝试直连的原因。

如果超时自动重试给你造成了问题,请参考样例配置中高级选项部分的 autoRetry 选项。

限制

  • COW 没有提供 cache仅仅在 server 和 client 之间传输数据
    • cache 还是交给浏览器吧
  • 被墙网站检测在恶劣的网络连接环境下不可靠
Description
No description provided
Readme BSD-2-Clause 1.6 MiB
Languages
Go 92.8%
Shell 4.8%
JavaScript 2.4%