Total Pageviews

Thursday, 8 October 2015

MEOW 是 COW的一个派生版本

 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:4411
proxy = 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),语法格式与直连列表相同 (注意:匹配的是域名按 . 分隔的后两部分或者整个域名

致谢

FROM https://github.com/luckypoem/MEOW

相关帖子;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 下载地址:
双击运行 MEOW.exe。这时任务栏就会出现 MEOW 的图标。右键单击图标,选择“设置 IE 代理” - “ http://127.0.0.1:4411/pac ” 

只要 MEOW 配置文件中的代理服务器数量大于 1,上面设置的 loadBalance = latency 这句配置就会起作用。此时 MEOW 会隔一段时间检查一下配置文件中所有服务器的连接情况,自动选择延时最短的服务器进行连接。

macOS 和 Linux 用户
下载
macOS 和 Linux 系统,请使用 Terminal 终端工具或 Bash 命令行工具。在用户主目录下,执行下面命令:curl -L git.io/meowproxy | bash
macOS 用户请使用系统自带的搜索功能,输入“Terminal”即可找到 Terminal 终端工具,输入上面的命令后,按回车,即可执行该命令。
可以输入 cd ~,回车,回到用户主目录。
下载 MEOW 期间,会问是否要将 MEOW 添加到开机自启动,输入 Y(是),回车。
设置
完成后,MEOW 可执行文件就会在用户主目录下,同时还有一个 .meow 隐藏文件夹,里面的文件与 Windows 版的一一对应:
  • direct
  • proxy
  • reject
  • rc
  • rc-full
配置文件 rc 的内容跟 Windows 版本的也完全一致。
小贴士:由于 .meow 文件夹是隐藏的,只有在 Terminal 或者 Bash 命令行工具下通过 ls命令才能看到。编辑 rc 配置文件可以这样:vi ~/.meow/rc 编辑 rc 配置文件,按字母 i进入 vi 编辑器的编辑模式。配置语句参考 Windows 版配置文件。编辑完成后,按:wq保存退出。
  1. 编辑完配置文件后,执行命令 ./MEOW & 在后台静默启动 MEOW;
  2. 此时进入 macOS 的“网络偏好设置”,点右下角的“高级...”,在弹出的页面中选中“代理”标签页,勾选“自动代理配置”;
  3. 右边 “URL” 中填写 http://0.0.0.0:4411/pac
  4. 此时可以打开谷歌首页 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 cleanrm -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
  • 对于 PHP 后端:
    • 请使用国内的 Composer 全量镜像:composer config -g repo.packagist composer https://packagist.phpcomposer.com
  • 对于 Ruby 后端:
    • 请使用国内的 Ruby Gem 全量镜像:gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
  • 对于 Android 开发者:
    • 给 Android Studio 设置 HTTP 代理:http://127.0.0.1:4411
  • 对于后端运维:
    • Docker for Windows 和 Docker for Mac:可在 Docker Daemon 可视化界面下配置 HTTP 代理:http://127.0.0.1:4411
    • Docker for Linux:可参照阿里云 Docker 镜像仓库加速器指南进行配置
    • Linux 运维:可使用 MEOW Linux 版本,配合 Shadowsocks 服务实现生产服务器科学上网
  • 通用用法:反正可以设置 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.txtrc-full.txt 都是 MEOW 的配置文件(以 rc.txt 命名的文件,才是真正起作用的配置文件。rc-full.txt 是带有详细描述的备份配置文件,用于理解各项配置的含义,需要重命名为 rc.txt,该配置文件才能起作用)
  • MEOW.exe 是运行文件,双击它即可运行 MEOW
  • direct.txt 是不使用 MEOW 的网址列表
  • proxy.txt 是使用 MEOW 的网址列表
  • reject.txt 是拒绝访问的网址列表,包含主流的用户数据追踪网站、广告投放网站等
注意:放在 reject.txt 里的网站都是无法访问的。如果平时需要使用比如友盟的服务,请务必把 reject.txt 里的 umeng.com 和 umeng.co 删掉,保存,重新载入 MEOW。

设置:

  1. 删掉 rc.txt 文件
  2. rc-full.txt 文件重命名为 rc.txt
  3. 用记事本或代码编辑器打开 rc.txt 文件
  • 删掉 judgeByIP = true 之前的井号(#),judgeByIP = true 就是通过 IP 地址判断是否直连,这个配置开启了智能分流功能
  • 删掉 proxy = ss://encrypt_method:password@1.2.3.4:8388 之前的井号(#),并按照 proxy = ss: //加密方式:登录密码@节点服务器地址:服务器端口 这样的格式修改这行参数
4. 双击运行 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.com
  • com.cn => *.com.cn
  • edu.cn => *.edu.cn
  • music.163.com => music.163.com
一般是确定要直接连接的网站

强制使用代理列表

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

致谢


from https://github.com/netheril96/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挂在路由器上给局域网设备使用代理。
# 支持的 protocol 如下:
# HTTP协议 (提供http代理):
#   listen = http://127.0.0.1:4411
#   MEOW 生成的 PAC url 为 http://127.0.0.1:4411/pac
1234
GOST https://docs.ginuerzh.xyz/gost/ 也有类似的功能,支持更多的协议.