MEOW is a fork of COW that uses whitelist mode.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc Update rc Nov 15, 2016
script fix build script Sep 29, 2016
testdata Add test for isFileExists. Dec 23, 2012
.gitignore update scripts & finish build.sh Oct 18, 2014
.travis.yml update travis ci Aug 25, 2016
CHANGELOG.md add CHANGLOG.md Sep 29, 2016
Dockerfile update script Jun 13, 2016
LICENSE Update CHANGELOG, LICENSE, README. Feb 1, 2013
README.md Update logo Dec 10, 2017
auth.go rename cow to meow Oct 5, 2014
auth_test.go fix tests & png icon Oct 14, 2014
chinaip_data.go Update IP data Dec 10, 2017
chinaip_gen.go add tests Aug 23, 2017
chinaip_init.go add tests Aug 23, 2017
chinaip_init_test.go add tests Aug 23, 2017
config.go support external china ip list Aug 2, 2017
config_test.go remove tunnel allowed port function Aug 23, 2015
config_unix.go support external china ip list Aug 2, 2017
config_windows.go support external china ip list Aug 2, 2017
conn_pool.go remove timeout Oct 18, 2014
conn_pool_test.go Fix conn_pool test, not covering multiplex channel. Oct 31, 2013
directip.go Use DIRECT for IPv6 addresses Apr 6, 2017
directip_test.go Use DIRECT for IPv6 addresses Apr 6, 2017
directlist.go support external china ip list Aug 2, 2017
directlist_test.go refact code and fix tests Nov 22, 2015
error.go now is MEOW Oct 12, 2014
http.go Merge pull request #2 from jeffrey4l/my_meow_dev Nov 24, 2017
http_test.go fix tests & png icon Oct 14, 2014
install.sh 1.5 Sep 29, 2016
log.go Setup all logger before calling initLog(). Jul 15, 2015
main.go no meowproxy.me Oct 9, 2015
pac.go 1.3.5 Jun 13, 2016
pac.js Fix #292: return direct for *.local host in PAC. May 8, 2015
parent_proxy.go add support for remote https proxy Nov 20, 2015
proxy.go fix Aug 25, 2016
proxy_test.go refact code and fix tests Nov 22, 2015
proxy_unix.go fix Aug 25, 2016
proxy_windows.go fix Aug 25, 2016
ssh.go Support multiple sshServer options. Jun 5, 2013
stat.go Collect client&server connection count, better debug message. Jul 28, 2013
timeoutset.go Abstract data structure TimeoutSet from chouTime. Jan 1, 2013
util.go Performance improvement for cn ip search. Nov 22, 2015
util_test.go Remove unused function copyNWithBuf. Jul 15, 2015

README.md

MEOW Proxy

当前版本:1.5 CHANGELOG Build Status

       /\
   )  ( ')     MEOW 是 [COW](https://github.com/cyfdecyf/cow) 的一个派生版本
  (  /  )      MEOW 与 COW 最大的不同之处在于,COW 采用黑名单模式, 而 MEOW 采用白名单模式
   \(__)|      国内网站直接连接,其他的网站使用代理连接

与原版MEOW的差别

  • 本代码仓库删除了编译好的二进制文件,大大减少了git clone时的传输大小
  • IPv6一律走直连(对于教育网用户很有用)

MEOW 可以用来

  • 作为全局 HTTP 代理(支持 PAC),可以智能分流(直连国内网站、使用代理连接其他网站)
  • 将 SOCKS5 等代理转换为 HTTP 代理,HTTP 代理能最大程度兼容各种软件(可以设置为程序代理)和设备(设置为系统全局代理)
  • 架设在内网(或者公网),为其他设备提供智能分流代理
  • 编译成一个无需任何依赖的可执行文件运行,支持各种平台(Win / Linux / OS X),甚至是树莓派(Linux ARM)

获取

  • 从源码安装: 安装 Go,然后 go get github.com/netheril96/MEOW

配置

编辑 ~/.meow/rc (OS X, Linux) 或 rc.txt (Windows),例子:

# 监听地址,设为0.0.0.0可以监听所有端口,共享给局域网使用
listen = http://127.0.0.1:4411
# 至少指定一个上级代理
# SOCKS5 上级代理
# proxy = socks5://127.0.0.1:1080
# HTTP 上级代理
# proxy = http://127.0.0.1:8087
# shadowsocks 上级代理
# proxy = ss://aes-128-cfb:password@example.server.com:25
# HTTPS 上级代理
# proxy = https://user:password@example.server.com:port

工作方式

当 MEOW 启动时会从配置文件加载直连列表和强制使用代理列表,详见下面两节。

当通过 MEOW 访问一个网站时,MEOW 会:

  • 检查域名是否在直连列表中,如果在则直连
  • 检查域名是否在强制使用代理列表中,如果在则通过代理连接
  • 检查域名的 IP 是否为国内 IP
    • 通过本地 DNS 解析域名,得到域名的 IP
    • 如果是国内 IP 则直连,否则通过代理连接
    • 将域名加入临时的直连或者强制使用代理列表,下次可以不用 DNS 解析直接判断域名是否直连

直连列表

直接连接的域名列表保存在 ~/.meow/direct (OS X, Linux) 或 direct.txt (Windows)

匹配域名按 . 分隔的后两部分或者整个域名,例子:

  • baidu.com => *.baidu.com
  • com.cn => *.com.cn
  • edu.cn => *.edu.cn
  • music.163.com => music.163.com

一般是确定要直接连接的网站

强制使用代理列表

强制使用代理连接的域名列表保存在 ~/.meow/proxy (OS X, Linux) 或 proxy.txt (Windows),语法格式与直连列表相同 (注意:匹配的是域名按 . 分隔的后两部分或者整个域名

致谢