MEOW 是 [COW](https://github.com/cyfdecyf/cow) 的一个派生版本. ( / ) MEOW 与 COW 最大的不同之处在于,COW 采用黑名单模式, 而 MEOW 采用白名单模式 \(__)| 国内网站直接连接,其他的网站使用代理连接.
更新说明
- 2015-08-23 Version 1.3.1
- 去除了端口限制
- 使用最新的 Go 1.5 编译
- 2015-07-16 Version 1.3
更新了默认的直连列表、加入了强制使用代理列表,强烈推荐旧版本用户更新 direct 文件和下载 proxy 文件(或者重新安装)
获取
- OS X, Linux: 执行以下命令(也可用于更新)
- 从源码安装: 先安装 Go
-
cd $GOPATH go get -u -v github.com/luckypoem/meow
- Windows: 下载地址
配置
编辑~/.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
(我的补充说明:
mkdir ~/.meow
cd ~/.meow
nano rc
rc文件的内容为:
listen = http://127.0.0.1:4411proxy = https://vps-ip:30289 )
工作方式
当 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),语法格式与直连列表相同
(注意:匹配的是域名按 . 分隔的后两部分或者整个域名)致谢
- @cyfdecyf - COW author
- Github - Github Student Pack
- https://www.pandafan.org/pac/index.html - Domain White List
- https://github.com/Leask/Flora_Pac - CN IP Data
相关帖子;http://briteming.blogspot.com/2013/02/cow-climb-over-wall-proxy.html
--------------------
- 作为前端开发者,需要使用 NPM,但是 NPM packages 基本都开源在 GitHub,而 GitHub 的访问速度很慢(并没有被墙),而 GitHub 的静态资源都存储在亚马逊的 AWS 云服务器(被墙),所以下载 GitHub 上的开源代码很慢、几乎无法下载 GitHub 上的代码压缩包或者项目编译后的版本包;
- 作为前端开发者,CNPM v4 在 Windows 上的兼容性不好,时不时会遇到一些莫名其妙的问题;
- 大部分国外网站的访问速度都很慢,因为没有在中国大陆使用 CDN(内容分发网络),或者也有可能是 GFW 的原因。
所有这些问题,归根结底,在于 Shadowsocks 使用的是黑名单 PAC。
黑名单与白名单
所谓黑名单,是指将“需要科学上网”的网址(域名)都记录在一个文件里,这个文件就是一份黑名单。科学上网软件通过判断将要访问的网址是否在黑名单里。该网站在黑名单里的话,就通过科学上网来访问该网址;不在的话,就不通过科学上网,直接连接。而白名单则相反。
可见,黑名单模式最大的弊端在于:要一直维护这份黑名单,否则哪天某个网站被墙了,而黑名单没有及时更新,就无法访问该网站了。
MEOW 的杀手锏
除了 Shadowsocks,还有一个名为 COW 的项目也是大名鼎鼎,为什么不用 COW 呢?其实 MEOW 是 COW 的一个 Fork 分支,它在 COW 的基础上,提供了智能分流的功能。
所谓智能分流,就是 MEOW 会自动判断哪些网址是中国大陆的网址,哪些是国外网址。对于大陆的网址,将会直接连接,不通过 MEOW 和 Shadowsocks 服务;对于国外网址,通过 MEOW 和 Shadowsocks 服务。
所以,MEOW 最大的好处是
能节省科学上网服务的流量的同时,为访问国外网站“加速”。个人认为,能通过判断 IP 地址所在地来决定是否使用智能分流,才是一个科学上网软件优秀与否的评判标准。MEOW 做到了,并为我节省了很多宝贵时间。此处向 MEOW 的开发者 renzhn 致敬!同时向 COW 的贡献者们致敬!
科普:为何智能分流能加速访问国外网站?
首先,为了能实现科学上网,科学上网服务的服务器都部署在中国大陆以外的各个地区(除非你是出国党想要翻回中国大陆,下文会提及),有香港、日本、新加坡、美国等……这些服务器扮演的角色是:我们的电子设备与目标网站的中间者。
- 假如我们访问国内的网站,需要先经过位于国外的科学上网的服务器,再来到国内的目标网站,相当于兜了一个大圈,肯定很慢;
- 假如我们要访问国外的网站(由于 GFW 的原因,本来很慢;或者没有使用 CDN),先经过科学上网服务的服务器(中间者),让不在 GFW 管辖范围内的这些中间者服务器将目标网站的内容快速地加载出来,然后直接传给我们的电子设备。这个过程虽然增加了中间者的角色,连接目标网站的时间要长一点,但是访问的速度加快了,整体而言也就是访问国外网站“加速”了。
MEOW 配合 Shadowsocks 服务的使用方法
MEOW 在 GitHub 的项目地址:https://github.com/renzhn/MEOW。聪明的孩子可以自己按照说明文档来安装喔。
Windows 用户
MEOW 下载地址:
- 32 位系统:MEOW-x86-1.3.5.zip
- 64 位系统:MEOW-x64-1.3.5.zip
只要 MEOW 配置文件中的代理服务器数量大于 1,上面设置的
loadBalance = latency 这句配置就会起作用。此时 MEOW 会隔一段时间检查一下配置文件中所有服务器的连接情况,自动选择延时最短的服务器进行连接。macOS 和 Linux 用户
下载
macOS 和 Linux 系统,请使用 Terminal 终端工具或 Bash 命令行工具。在用户主目录下,执行下面命令:
curl -L git.io/meowproxy | bashmacOS 用户请使用系统自带的搜索功能,输入“Terminal”即可找到 Terminal 终端工具,输入上面的命令后,按回车,即可执行该命令。可以输入cd ~,回车,回到用户主目录。
下载 MEOW 期间,会问是否要将 MEOW 添加到开机自启动,输入
Y(是),回车。设置
完成后,MEOW 可执行文件就会在用户主目录下,同时还有一个
.meow 隐藏文件夹,里面的文件与 Windows 版的一一对应:directproxyrejectrcrc-full
配置文件
rc 的内容跟 Windows 版本的也完全一致。小贴士:由于.meow文件夹是隐藏的,只有在 Terminal 或者 Bash 命令行工具下通过ls命令才能看到。编辑rc配置文件可以这样:vi ~/.meow/rc编辑 rc 配置文件,按字母i进入 vi 编辑器的编辑模式。配置语句参考 Windows 版配置文件。编辑完成后,按:wq保存退出。
- 编辑完配置文件后,执行命令
./MEOW &在后台静默启动 MEOW; - 此时进入 macOS 的“网络偏好设置”,点右下角的“高级...”,在弹出的页面中选中“代理”标签页,勾选“自动代理配置”;
- 右边 “URL” 中填写
http://0.0.0.0:4411/pac - 此时可以打开谷歌首页 http://www.google.com,测试是否能成功科学上网啦!
- macOS 和 Linux 用户,在终端或命令行中依次执行以下命令,重新加载命令行或终端后生效:
vi ~/.bash_profile(使用bash的用户请执行这条命令,默认是bash)vi ~/.zsh_profile(使用zsh的用户请执行这条命令)- 在文件最后加入以下两句命令(保存,重启终端后生效):
export http_proxy="http://127.0.0.1:4411"export https_proxy="http://127.0.0.1:4411"
此时,除了
ping 等 Windows 系统自带命令,其余一切 CLI 命令均使用了 MEOW 的 HTTP 代理,从而实现智能分流,加速下载。此方法只对当前系统用户有效,其余用户需要按照步骤重新设置。开发环境配置
MEOW 启动之后,就在本局域网的
4411 端口上开启了一个 HTTP 代理。所有支持 HTTP 代理的开发软件都可以配置 IP 地址 0.0.0.0 和端口 4411 使用 HTTP 代理,从而使用 MEOW 的智能分流功能加速下载。- 对于前端 NPM :
- 因为会智能分流,配合淘宝的 CNPM 镜像才是最快的:
npm config set registry=https://registry.npm.taobao.org - 让 NPM Packages 的安装过程变得可视化:
npm config set loglevel=http - 安装失败后,最好先清除 NPM 的缓存文件,强制删除 node_modules 文件夹,再重新安装:
npm cache clean、rm -rf node_modules - 最重要:Windows 下编译 Node 的 C++ 模块终于不需要安装 Visual Studio 这个大块头了:
npm install --global --production windows-build-tools;这个项目的地址:windows-build-tools - 上面这个命令跑完之后,可以尝试安装
gulp-image这个 Package 测试一下是否成功:npm install gulp-image - 如果你使用 macOS,可以尝试使用 cnpm v4:
npm install -g cnpm。cnpm v4 采用跟 npm 完全不一样的实现方式,超快。但在 Windows 下暂时有莫名其妙的坑,请勿在 Windows 平台下使用。 - 也可以尝试使用 Facebook 开源的 Yarn 包管理器,以取代 npm
- 因为会智能分流,配合淘宝的 CNPM 镜像才是最快的:
- 对于 PHP 后端:
- 请使用国内的 Composer 全量镜像:
composer config -g repo.packagist composer https://packagist.phpcomposer.com
- 请使用国内的 Composer 全量镜像:
- 对于 Ruby 后端:
- 请使用国内的 Ruby Gem 全量镜像:
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
- 请使用国内的 Ruby Gem 全量镜像:
- 对于 Android 开发者:
- 给 Android Studio 设置 HTTP 代理:
http://127.0.0.1:4411
- 给 Android Studio 设置 HTTP 代理:
- 对于后端运维:
- Docker for Windows 和 Docker for Mac:可在 Docker Daemon 可视化界面下配置 HTTP 代理:
http://127.0.0.1:4411 - Docker for Linux:可参照阿里云 Docker 镜像仓库加速器指南进行配置
- Linux 运维:可使用 MEOW Linux 版本,配合 Shadowsocks 服务实现生产服务器科学上网
- Docker for Windows 和 Docker for Mac:可在 Docker Daemon 可视化界面下配置 HTTP 代理:
- 通用用法:反正可以设置 HTTP 代理的开发软件,都可以尝试设置 HTTP 代理以实现下载加速:
http://127.0.0.1:4411
温馨提示:这两种设置方法相当于为命令行交互界面(CLI)下的所有命令都设置了代理。以后运行命令前,必须保证 MEOW 代理正常运行,需要网络支持的命令才能正常执行。
总结
- MEOW 是一个支持 Windows、macOS、Linux 的科学上网软件,基于白名单,提供智能分流功能。正常运行后,在本机(127.0.0.1)或局域网(0.0.0.0)的
4411端口提供一个 HTTP 代理.
适合已经有了稳定的 Shadowsocks 账号的朋友使用(自建或者购买),有了 MEOW 你可以不用开启 Shadowsocks 客户端,浏览器不需要安装代理扩展就可以浏览墙外风光,大陆 IP 自动直连,节省流量,支持多协议多账号,一次配置,上网无忧。
MEOW Proxy GitHub 的项目地址:https://github.com/renzhn/MEOW 各大系统平台下载地址:https://github.com/renzhn/MEOW/tree/gh-pages/dist/
MEOW 配合 SS 服务的使用方法:
这里只介绍Windows平台的使用方法打开下载好的压缩包,可以看到包含这么几个文件:
rc.txt和rc-full.txt都是 MEOW 的配置文件(以rc.txt命名的文件,才是真正起作用的配置文件。rc-full.txt是带有详细描述的备份配置文件,用于理解各项配置的含义,需要重命名为rc.txt,该配置文件才能起作用)MEOW.exe是运行文件,双击它即可运行 MEOWdirect.txt是不使用 MEOW 的网址列表proxy.txt是使用 MEOW 的网址列表reject.txt是拒绝访问的网址列表,包含主流的用户数据追踪网站、广告投放网站等
注意:放在reject.txt里的网站都是无法访问的。如果平时需要使用比如友盟的服务,请务必把reject.txt里的 umeng.com 和 umeng.co 删掉,保存,重新载入 MEOW。
设置:
- 删掉
rc.txt文件 - 将
rc-full.txt文件重命名为rc.txt - 用记事本或代码编辑器打开
rc.txt文件
- 删掉 judgeByIP = true 之前的井号(#),judgeByIP = true 就是通过 IP 地址判断是否直连,这个配置开启了智能分流功能
- 删掉 proxy = ss://encrypt_method:password@1.2.3.4:8388 之前的井号(#),并按照
proxy = ss: //加密方式:登录密码@节点服务器地址:服务器端口这样的格式修改这行参数
MEOW.exe 这时任务栏就会出现 MEOW 的图标。右键单击图标,选择“设置 IE 代理 - “ http://127.0.0.1:4411/pac ”注意:如果你有多个 Shadowsocks 账号,可将至此,开始你愉快冲浪之旅吧.loadBalance = backup修改为loadBalance = latency并删除之前的井号(#),并在二级代理的proxy设置里填写正确的账号,这样 MEOW 会隔一段时间检查一下配置文件中所有服务器的连接情况,自动选择延时最短的服务器进行连接;
listen = http://0.0.0.0:4411的意思是在本局域网内(同一个路由器或 WiFi 所在的网络)提供一个端口号为 4411 的 HTTP 代理。
-----
MEOW is a fork of COW that uses whitelist mode.
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.comcom.cn=>*.com.cnedu.cn=>*.edu.cnmusic.163.com=>music.163.com
一般是确定要直接连接的网站
强制使用代理列表
强制使用代理连接的域名列表保存在
~/.meow/proxy (OS X, Linux) 或 proxy.txt (Windows),语法格式与直连列表相同 (注意:匹配的是域名按 . 分隔的后两部分或者整个域名)致谢
- @cyfdecyf - COW author
- @renzhn - Original MEOW author
- Github - Github Student Pack
- https://www.pandafan.org/pac/index.html - Domain White List
- https://github.com/Leask/Flora_Pac - CN IP Data
- https://github.com/17mon/china_ip_list - CN IP Data
from https://github.com/netheril96/MEOW
(https://github.com/luckypoem/meow)
(https://github.com/luckypoem/meow)
(https://github.com/rasso1/MEOW)
--------
MEOW 将HTTPS代理转为HTTP代理
有些代理使用TLS加密的方式或socks5协议,除了桌面浏览器之外和专用客户端,Mac和手机系统都不能直接使用。可以使用MEOW转换成标准HTTP代理。
MEOW 是 COW 的一个修改版,具有中继代理的作用,支持shadowsock转换为HTTP协议,可用作级联代理.
MOEW本身就是一个代理服务器,可单独使用,也可串联其他MEOW代理。不过最重要的是它提供了HTTP代理作为入口,出口可以是shadowsock或另外一个HTTP代理。它还可以处理二级代理的认证,部署在内网可以免去客户端认证,这样可以屏蔽掉代理的差异和变动,多个proxy出口可以作为后备或轮询,MEOW使用Go语言,可以安装在Raspberry Pi挂在路由器上给局域网设备使用代理。
GOST https://docs.ginuerzh.xyz/gost/ 也有类似的功能,支持更多的协议.