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 代理」端口