type
Post
status
Published
date
Mar 26, 2017
slug
build-fluent-net-env
summary
对一个程序员来说,能够无障碍的上网是非常重要的,毕竟现在的计算机科学的重心依然在国外.面对越来越严苛的封锁,提高自己的架梯子技术迫在睫眉.
tags
工具
category
技术分享
icon
password
Property
Jan 1, 2023 11:56 AM

服务器端

VPS我购买的是 vultr,最便宜的是2.5刀一个月,东京的服务器延迟还可以接受,系统使用的是
ubuntu server 16.04
服务器上安装的是python版本的
shadowsocks
最近发现还有go语言版本的,下次安装一个试试
安装方式很简单:
apt-get install update apt-get install install python-setuptools && easy_install pip pip install shadowsocks
安装完成以后,需要你手动撸一个配置文件:
{ "server":"45.32.37.200", //服务器的IP地址 "local_address":"127.0.0.1", "local_port":1080, "port_password":{ //对外的端口以及对应的密码 "8388":"foobar1", "8389":"foobar2", "8390":"foobar3", "8391":"foobar4" }, "timeout":300, "method":"aes-256-cfb", //加密方式 "fast_open": false }
保存在~/c.json. 配置好了以后就可以启动shadowsocks了:
ssserver -c ss.json -d start

客户端

OSX

客户端的选择很多,我使用的是
shadowsocksX-NG
:
notion image
安装好了以后,在
服务器设置
里面加入你的配置:
注意我给服务器绑定了域名,这样的好处是以后更换服务器不需要再改客户端配置,只要改下dns的设置就可以
notion image
要注意加密方式以及端口和密码的对应. 这样子设置好了以后,打开shadowsocksX-NG就可以畅游网络了.

命令行

对于普通人来说,上面的步骤基本就能满足需求了,但是对一个程序员来说还是不够的,尤其是特别依赖命令行交互的后端开发.由于shadowsocksX- NG为我们自动设置好了HTTP代理,由于我用的是zsh,因此只需要在~/.zshrc中加入这样一行:
alias pp='env http_proxy=http://127.0.0.1:1087 https_proxy=http://127.0.0.1:1087'
设置好了以后,在需要走代理的命令前面加入pp.如:
curl ip.gs #直接连接 pp curl ip.gs ## 走代理
效果如下:
▶ curl ip.sb 112.64.63.157 ▶ pp curl ip.sb 45.76.101.67
可以看到,加了pp以后,显示的ip是我们VPS的ip.
SOCK5代理转HTTP代理
如果你用的客户端软件不会自动把sock5代理转成http/https代理,那么我们需要额外做一些工作,借助polipo这个软件手动把代理类型转换一下:
brew install polipo
安装好了以后,只需要告诉polipo sock5代理的端口:
alias pp='env http_proxy=http://127.0.0.1:8123 https_proxy=http://127.0.0.1:8123' #8123 是polipo默认的端口 alias startpp='nohup polipo socksParentProxy=127.0.0.1:1086 proxyAddress=0.0.0.0 &'
只要在系统启动的时候,执行一次startpp,以后就可以使用pp来代理你需要的命令了.

GIT

在使用git来提交代码的时候,你会发现如果使用的是https协议的话,那么加pp是可以走代理的,但是如果使用的是git协议,因为git协议走的是ssh,因此我们需要修改ssh的配置,配置文件在~/.ssh/config:
Host github.com User git ProxyCommand nc -x 127.0.0.1:1086 %h %p #1086是你的http协议的端口,如果使用polipo转换,那么就是默认的8123端口
感受一下极速clone代码的快感吧.

iOS & Android

移动设备上配置方式也类似,iOS的代理软件推荐surgeshadowrockets, Android上也有类似的软件,配置方式也可参考OSX的配置.
go 语言中哪种字符串拼接的方式最高效?通过带缓冲的channel来控制并发数

杂鱼
杂鱼
菜鸟程序员