shadowsocks on Mac OS X

下载 download


github release 下载地址:

旧版 2.6.3 版本下载:ShadowsocksX-2.6.3.dmg

旧版没法更新 PAC 文件列表 (GFWList) 手动解决 方法请参考 issue 212 :

https://github.com/shadowsocks/shadowsocks-iOS/issues/212

MD5 hash

请牢记 XcodeGhost 教训

打开 终端 应用,使用 md5 命令校验下载文件的 MD5 哈希值:

$ md5 Downloads/ShadowsocksX-2.6.3.dmg
MD5 (Downloads/ShadowsocksX-2.6.3.dmg) = c3406e8d4a5009efaa74d3a37b53fed8

HOWTO


  1. 运行 ShadowsocksX
  2. 配置 代理服务器
  3. 连接 代理服务器
  4. 开启 系统代理
  5. 测试 科学上网
  6. GFWList 更新 PAC 文件

【运行】ShadowsocksX

运行 ShadowsocksX 后,会在 menubar 显示 「纸飞机」 图标
默认图标为 灰色 表示 「系统代理」 未启动

img_mac_icon

【编辑】代理服务器

点击 「纸飞机」 选择 「服务器」 菜单,然后点击 【打开服务器设定】 选项:

img_mac_ss

弹出 「服务器设定」 窗口:

img_mac_edit

根据 服务端 配置,填写对应的 客户端 配置:

shadowsocks 服务端配置 mac 客户端对应配置项
"server":"45.67.89.10" 服务器 IP 地址
"server_port":37210 服务器 端口
"password":"V_VL_Fuck_GFW" 服务器 密码
"method":"chacha20-ietf-poly1305" 加密方案

【连接】代理服务器

选中 「服务器」 菜单创建的代理服务器配置,出现 对号 「√」 表示与代理服务器建立连接

成功与代理服务器建立连接后,便会创建 「SOCKS5 代理」 使用 lsof -Pn -i4|grep LISTEN 命令可以查看端口

img_mac_ss

【开启】系统代理

点击 「主菜单」 第二行 【打开 shadowsocks】 启用 「系统代理」

  1. 第一行:系统代理 运行 状态,显示 「关闭」 状态
  2. 第二行:系统代理 运行 开关,默认 系统代理 没有启动( 图标为 灰色

「系统代理」 启动前后 「主菜单」 第一行 代理状态 和 第二行 运行开关 选项变化:

菜单 启动代理前 启动代理后
menubar 图标颜色 灰色 黑色
第一行:系统代理状态 Shadowsocks: 关闭 Shadowsocks: 打开
第二行:代理开关 打开 Shadowsocks 关闭 Shadowsocks

「系统代理」 启动前:

img_mac_menu

「系统代理」 启动后:

img_mac_start

系统代理 启动后 menubar 的 「纸飞机」 图标也变为 黑色

img_mac_icon_start

系统代理 vs SOCK5 代理

「系统代理」「SOCKS5 代理」 区别:

系统代理

  • shadowsocks 创建的 「系统代理」 将自动接管浏览器的访问 全部请求
  • 浏览器默认不需要任何设置,也无需安装 代理插件 (Firefox 除外)
  • 如果浏览器安装了代理插件,需要 禁用 代理插件或将代理插件设置为 使用系统代理

SOCKS5 代理

  • 若不 【启用系统代理】 shadowsocks 成功连接代理服务器后,仅创建了 「SOCKS5 代理」
  • 浏览器需要安装 代理插件 并设置 shadowsocks 创建的 SOCKS5 代理端口,才能科学上网

【测试】科学上网

如果 系统代理 运行成功,就可以访问 google 。如果失败,请检查 「服务器配置」 是否正确:

img_mac_google

【更新】PAC 文件

最后在主菜单中点击 「从 GFWList 更新 PAC 文件」 更新翻墙列表:

img_mac_update_pac

SOCKS5 代理


Mac 下 shadowsocks 客户端启用的端口:

$ lsof -iTCP -sTCP:LISTEN -n -P
COMMAND   PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
privoxy   526    i    3u  IPv4 0xa3a011e7      0t0  TCP 127.0.0.1:1087 (LISTEN)     ## 系统代理
ss-local  537    i    5u  IPv4 0xa322b3d7      0t0  TCP 127.0.0.1:1086 (LISTEN)
Shadowsoc 759    i    4u  IPv4 0xa3f1dadf      0t0  TCP *:8090 (LISTEN)
Shadowsoc 759    i    9u  IPv4 0xa3a5aff7      0t0  TCP 127.0.0.1:1080 (LISTEN)     ## socks5 端口

使用 curl --socks5 127.0.0.1:1080 http://cip.cc 命令确认 SOCKS5 代理是否正常可用:

$ curl --socks5 127.0.0.1:1080 http://cip.cc    ## 指定 socks5 代理参数
IP    : 45.67.89.10
地址    : 美国  加利福尼亚

数据二    : 美国 | 洛杉矶

URL    : http://www.cip.cc/45.67.89.10

$ curl http://cip.cc
IP    : 111.20.83.57
地址    : 中国  北京

数据二    : 北京市 | 联通

URL    : http://www.cip.cc/111.20.83.57

终端 启动 chrome 指定 SOCKS5 代理参数:

open -a "Google Chrome" --args \
--proxy-server="socks5://127.0.0.1:1080" \
--host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost"

然后就可以在应用商店下载 Proxy SwitchyOmega 插件

本地端口

旧版 ShadowsocksX 创建的 「SOCKS5 代理」端口 默认是 1080

$ grep 127 ~/.ShadowsocksX/gfwlist.js
var proxy = "SOCKS5 127.0.0.1:1080; SOCKS 127.0.0.1:1080; DIRECT;";

新版 ShadowsocksX-NG 创建的 「SOCKS5 代理」端口 默认改成 1086 升级后别忘了修改代理插件对应的端口:

$ cat "/Users/yourname/Library/Application Support/ShadowsocksX-NG/ss-local-config.json"

{
  "method" : "chacha20-ietf-poly1305",
  "server" : "IP",
  "password" : "...",
  "local_address" : "127.0.0.1",
  "server_port" : ...,
  "auth" : false,
  "timeout" : 60,
  "local_port" : 1086
}

也可以自行修改 ~/.ShadowsocksX/gfwlist.js 配置文件,自定义 「SOCKS5 代理」端口