使用shadowsocks及 ProxyChains-NG 实现终端(iterm)下代理

6

Shadowsocks

github 地址

码农对于shadowsocks应该不陌生,而一般普通网民可能知之甚少。shadowsocks实质上也是一种socks5代理服务,类似于ssh代理。与vpn的全局代理不同,shadowsocks仅针对浏览器代理,不能代理应用软件,比如youtube、twitter客户端软件。如果把vpn比喻为一把屠龙刀,那么shadowsocks就是一把瑞士军刀,轻巧方便,功能却非常强大。

shadowsocks的可以使用在OX、iOS、Windows、Android等平台中,并且可以针对chrome浏览器进行单独配置,这里有一篇简书的文章,对各种配置方法进行了详细的介绍ShadowSocks—科学上网之瑞士军刀

我这篇文章主要要讲的是网上比较少提到的shadowsocks实现终端(iterm)下代理

使用proxychains-ng实现iterm代理

github 地址

官方说明:

proxychains ng (new generation) - a preloader which hooks calls to sockets in dynamically linked programs and redirects it through one or more socks/http proxies. continuation of the unmaintained proxychains project.

安装

使用 Homebrew 安装

Tracy@666 ~  $ brew install proxychains-ng

配置

编辑配置文件 vim /usr/local/etc/proxychains.conf
在 [ProxyList] 下面(也就是末尾)加入代理类型,代理地址和端口
例如使用 TOR 代理,注释掉原来的代理并添加

socks5  127.0.0.1 1080

如果所在的网络很复杂,可能需要在配置文件中启用
dynamic_chain - 按照列表中出现的代理服务器的先后顺序组成一条链,如果有代理服务器失效,则自动将其排除,但至少要有一个是有效的
然后在 [ProxyList] 下添加多个代理

默认:strict_chain - 按照后面列表中出现的代理服务器的先后顺序组成一条链,要求所有的代理服务器都是有效的

测试

proxychains4 curl google.com

注意:proxychains支持的是socks,http, https协议.它们以tcp或者udp协议为基础, ping命令用的是 ICMP 协议, proxychains 不支持;

优化

alias

alias pc="proxychains4"

iTerm中前缀补全

你输了很长一段命令,然后你突然想使用代理功能,怎么办?

我想你应该会复制一下,然后重写;

现在你可以这样做:

iTerm -> Preferences -> Profiles -> Keys 中,新建一个快捷键,例如 + p ,Action 选择 Send Hex Code,键值为 0x1 0x70 0x63 0x20 0xd,保存生效。

以后命令要代理就直接敲命令,然后 ⌥ + p 即可,这样命令补全也能保留了。


如果觉得我的文章对你有用,请随意赞赏

你可能感兴趣的

asins · 2016年06月13日

这个方法在 osx 10.11.5上运行不起来,执行命令时得到的都是非代理的,看一文章讲到在安全模式下关掉就可以csrutil disable;reboot,这样总觉得不安全,情愿不能用,呵呵。

不知有没有其它的方法解决这问题。

+2 回复

iCyMind · 2016年08月11日

系统版本的curl/wget/git等位于/bin/,/sbin/,/usr/bin目录下的程序用不了,自己安装的程序可以用。所以,自己用brew install装自己需要翻墙的命令行软件即可

回复

asins · 2016年08月15日

没有明白你的意思,是说我再用brew install重新安装curl/wget/git这几个工具就可以使用了?
proxychains-ng这个工具我也是使用brew安装的。是否能更新下你的文章讲下如何解决非root下如何能正常使用?

回复

iCyMind · 2016年08月15日

这并不是我的文章. 比如想让wget用代理吧,1先brew install wget, 2使用:proxychains4 /usr/local/bin/wget www.google.com。总之proxychains4 后面接的命令不是系统自带的就行

回复

darkbaby123 · 2016年09月29日

http_proxy 和 https_proxy 对系统自带命名都可以用。可以后台开一个 polipo 当 http 代理,把 http 请求转发到 SS 。命令行里用 http_proxy=http://host:port your_command 就行。前面那部分可以写一个简单的 alias 。

回复

夕君 · 2016年11月18日

mac 10.12 不行

brew 也重新安装了 系统自带的

 anla@localhost  ~  proxychains4 curl https://www.twitter.com/
[proxychains] config file found: /usr/local/Cellar/proxychains-ng/4.11/etc/proxychains.conf
[proxychains] preloading /usr/local/Cellar/proxychains-ng/4.11/lib/libproxychains4.dylib
curl: (7) Failed to connect to www.twitter.com port 443: Operation timed out

回复

发条橙子 · 2017年02月23日

https://segmentfault.com/a/11...
原来我也是用proxychains-ng失败了,因为保护机制,使用了polipo 写了个配置文章,需要的小伙伴可以copy 一下

回复

载入中...