Step 1: Install Shadowsocks Client
Shadowsocks is an open-source proxy project to help people visit some websites :). To speed up web surfing, we need to install a Shadowsocks client first.
For Ubuntu:
sudo apt-get install shadowsocks |
For Mac:
brew install shadowsocks-libev |
You can also download a GUI client from https://sourceforge.net/projects/shadowsocksgui/
Create a directory named shadowsocks:
mkdir shadowsocks
,
cd
into it, create a file named
shadowsocks.json
with the following content:
1 2 3 4 5 6 7 8 | { "server": "139.162.10.88", // your server ip address "server_port": 12345, // your server port "local_port": 1080, "password": "your_password", "timeout": 600, "method": "aes-256-cfb" // your encrption method } |
Run the following command to start the Shadowshocks client:
sudo nohup sslocal -c ./shadowsocks.json & |
It’ll open a local port to wait for the connection, and here it’s
1080
.
Step 2: Use Shadowsocks Client as HTTP Proxy
First, let’s do some check:
$ curl ip.gs Current IP: 59.110.66.150 From: Beijing, China Alibaba Cloud/Telecom/China Unicom/Mobile/Tietong/Education Network |
Yes, I’m safely protected by the wall :).
With the environment variable
http_proxy
set, we can travel abroad:
$ http_proxy=socks5://localhost:1080 curl ip.gs Current IP: 139.162.10.88 from: Singapore Singapore linode.com |
However, some command line tools (such as
npm
) don’t support
socks5
protocol, and under the help of
polipo
we can convert
socks5
into
http
sudo apt-get install polipo |
Edit the config file at
/etc/polipo/config
, and append the following two lines:
socksParentProxy = "localhost:1080" socksProxyType = socks5 |
Finally, restart
polipo
:
sudo service polipo stop sudo service polipo start |
And for Mac:
brew install polipo |
Edit file
/usr/local/opt/polipo/homebrew.mxcl.polipo.plist
, add the
socksParentProxy
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>homebrew.mxcl.polipo</string> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <key>ProgramArguments</key> <array> <string>/usr/local/opt/polipo/bin/polipo</string> <string>socksParentProxy=localhost:1080</string> </array> <!-- Set `ulimit -n 65536`. The default macOS limit is 256, that's not enough for Polipo (displays 'too many files open' errors). It seems like you have no reason to lower this limit (and unlikely will want to raise it). --> <key>SoftResourceLimits</key> <key>NumberOfFiles</key> <integer>65536</integer> </dict> </plist> |
Restart polipo:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.polipo.plist launchctl load ~/Library/LaunchAgents/homebrew.mxcl.polipo.plis |
Also you can make it start when the system launches:
ln -sfv /usr/local/opt/polipo/*.plist ~/Library/LaunchAgents |
Now you can the the http proxy offered by
polipo
$ http_proxy=http://localhost:8123 curl ip.gs |
You can set it globally by (here I just add
https_proxy
by the way):
export http_proxy=http://localhost:8123 export https_proxy=http://localhost:8123 |
And stop the proxy with
unset http_proxy
or (
unset https_proxy
).
Also, you can put the two export lines into your
.zshrc
(or,
.bashrc
) to set the proxies automatically when you start a new shell session.
source ~/.zshrc
or restart a new session, you can see the proxy works:
Current IP: 139.162.10.98 from: SingaporeSingapore linode.com |
Step 3: Set Up git
Proxy
git
First try it out:
git clone https://github.com/twbs/bootstrap.git |
In Aliyun, it’s quite slow. We can let git use the proxy with the following command:
git config --global http.proxy 'socks5://127.0.0.1:1080' |
It will create a
http
section in your
~/.gitconfig
file:
[http] proxy = socks5://127.0.0.1:1080 |
Now, you can clone any repository in Github much faster.
Step 4: Set Up pip
pip
In Aliyun, the connection of
pip
is very slow:
$ pip install tornado Collecting tornado Downloading tornado-4.4.2.tar.gz (460kB) 4% |█▍ | 20kB 11kB/s eta 0:00:37 |
If you set the
https_proxy
environment variable, the following steps are saved. However, since
proxychains
is very handy, I’ll spend one section to detail it’s configuration.
sudo apt-get install proxychains |
Change the config file at
~/.proxychains/proxychains.conf
, and change the
[ProxyList]
in it:
[ProxyList] socks5 127.0.0.1 1080 # You can also use the http proxy polipo offers # http 127.0.0.1 8123 |
For Mac, use
proxychains-ng
instead:
$ brew install proxychains-ng |
/usr/local/etc/proxychains.conf
[ProxyList]
in it like what we did for Ubuntu.
Now you can install packages much faster.
For Ubuntu, put
proxychains
before
pip
$ proxychains pip install tornado ProxyChains-3.1 (http://proxychains.sf.net) | D-chain|-<>-127.0.0.1:1080-<><>-151.101.36.223:443-<><>-OK 51% |████████████████▍ | 235kB 553kB/s eta 0:00:01 |
proxychains4
proxychains4 pip install Faker [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 [proxychains] DLL heat: proxychains-of 4.11 Collecting Faker [proxychains] Strict chain ... 127.0.0.1:1080 ... pypi.python.org:443 ... OK Downloading Faker-0.7.7-py2.py3-none-any.whl (562kB) 100% |████████████████████████████████| 563kB 1.3MB/s ... Installing collected packages: Faker Successfully installed Faker-0.7.7 |
Step 5: Set npm
npm
If you set the shell
http_proxy
and
https_proxy
npm
would take advantage of the proxy. But you can always make things safer by instruct the following commands:
npm config set proxy http://localhost:8123 npm config set https-proxy http://localhost:8123 |
Also with the help of
proxychains
, you can make
npm
traffic go through the proxy. But you should make sure not use
proxychains
with the
http_proxy
https_proxy
environmant variables set at the same time.
Conclusion
We can live a safe and slow life, or a “dangerous” but fast one, and Shadowsocks with all these proxy tools will help us to achieve that. Thanks all these “wanderlusters” who wallow in freedom to create these awesome stuff, and wish you a good journey with the “ladder”. Beyond the wall, there is the world.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
WeChat public account: resonance circle
Welcome to discuss, Email: 924948$qq.com Please change $to @
QQ group: 263132197
QQ: 924948