ShadowSocks 代理配置教程

客户端配置

查阅参考资料2

安装

确保安装python的包管理工具pip

sudo pip install shadowsocks

配置文件

创建json配置文件shadow.json

1
2
3
4
5
6
7
8
{
"server":"xxx.xxx.xxx.xxx",
"server_port":8080,
"local_port":1080,
"password":"xxxxxx",
"timeout":600,
"method":"aes-256-cfb"
}

编写脚本运行shadows.sh

1
2
#!/bin/sh
sslocal -c shadow.json

免费帐号列表

https://www.ss-link.com/my/free

Chrome配置教程

需要使用插件SwitchySharp或者SwitchyOmega
我使用的是SwichyOmega

下载crx文件后拖动到chrome://extensions/页面的窗口中安装。

项目中提供图文配置教程

遇到的错误

Python socket.error: [Errno 98] Address already in use

端口占用,更改json配置文件更换端口

跨平台的图形化配置工具

可以使用shadowsocks-qt5

这里我举例的是ubuntu的安装方式,其他系统请参考安装手册。

安装方式

1
2
3
sudo add-apt-repository ppa:hzwhuang/ss-qt5
sudo apt-get update
sudo apt-get install shadowsocks-qt5

打开方式

按徽标键,输入Shadowsocks-Qt5即可运行

此外,其他图形工具可参考[4]

Android的ShadowSocks客户端 - 影梭

可以在github中shadowsocks-android项目的release页面直接下载apk文件安装。

关于全局代理的设置

Windows

利用Proxifier让shadowsocks变为全局代理

Ubuntu

方案一

System Settings => Network => Network proxy

方案二

利用shell脚本设置Linux Shadowsocks 全局代理

一键式脚本

myss.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#!/usr/bin/python
# -*- coding: utf-8 -*-
from selenium import webdriver
import json
import os
driver = webdriver.Firefox()
driver.get("https://www.ss-link.com/login")
#登录
driver.find_element_by_id("email").clear()
driver.find_element_by_id("email").click()
driver.find_element_by_id("email").send_keys("example@163.com")
driver.find_element_by_id("password").clear()
driver.find_element_by_id("password").click()
driver.find_element_by_id("password").send_keys("exmaple123")
driver.find_element_by_id("login").click()
#获取信息
driver.get("https://www.ss-link.com/my/free")
server = driver.find_element_by_xpath("/html/body/div/table/tbody/tr[1]/td[2]").text
print "server ip is",server
server_port = driver.find_element_by_xpath("/html/body/div/table/tbody/tr[1]/td[3]").text
print "server port is",server_port
password = driver.find_element_by_xpath("/html/body/div/table/tbody/tr[1]/td[4]").text
print "password is",password
method = driver.find_element_by_xpath("/html/body/div/table/tbody/tr[1]/td[5]").text
print "method is",method
#生成json
dic = {}
dic['server'] = "104.250.147.22"
dic['server_port'] = server_port
dic['local_port'] = 1080
dic['password'] = password
dic['timeout'] = 600
dic['method'] = method
shadow = json.dumps(dic)
# save json
f = open('shadowsock_setup.json','w')
f.write(shadow)
f.close()
driver.quit()
# start
os.system('sslocal -c shadowsock_setup.json')

shell

1
2
#!/bin/sh
python myss.py

利用Lantern为shell设置代理

lantern shell proxy

lantern 默认的端口就是8787
在shell中

1
lantern --addr 0.0.0.0:8787

然后在系统网络设置中设置全局代理

1
127.0.0.1:8787

然后重新开一个shell。

最后可以用

1
wget www.google.com

来测试配置是否成功。

任意应用代理

Kali下安装Shadowsocks与利用ss和ProxyChains实现任意应用代理

自动抓取 ishadowsocks 生成 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import bs4
import json
import argparse
import subprocess
def _init():
server = []
port = []
password = []
encrypt = []
status = []
configs = []
configs.append(server)
configs.append(port)
configs.append(password)
configs.append(encrypt)
configs.append(status)
return configs
def capture_ss_config(configs):
r = requests.get(url='http://www.ishadowsocks.org/')
soup = BeautifulSoup(r.text, "html.parser")
free = soup.find("section", id="free")
im_div = free.div.contents[3]
for p in im_div.contents:
if isinstance(p, bs4.element.Tag):
for i in range(len(configs)):
text = p.find_all("h4")[i].text
config_text = text.split(':')[-1]
# print config_text
configs[i].append(config_text)
return configs
def gen_json(configs):
for i in range(3):
if configs[4][i] != u'正常':
continue
config_json = {}
config_json['server'] = configs[0][i]
config_json['server_port'] = int(configs[1][i])
config_json['local_address'] = "127.0.0.1"
config_json['local_port'] = 1080
config_json['password'] = configs[2][i]
config_json['timeout'] = 512
config_json['method'] = configs[3][i]
config_json['fast_open'] = False
config_json['workers'] = 1
file_name = config_json['server'].split('.')[0] + '.json'
with open(file_name, 'w') as f:
f.write(json.dumps(config_json))
f.close()
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--run", help="run sslocal using config json file set by run")
args = parser.parse_args()
if args.run is None:
configs = _init()
configs = capture_ss_config(configs)
gen_json(configs)
else:
config_filename = args.run
subprocess.Popen(['sslocal', '-c', config_filename], stdout=subprocess.PIPE)

Setting up Shadowsocks with Firefox

配置火狐浏览器使用 Shadowsocks.
http://abclite.top/136/

Android ShadowsSocks 分应用代理设置

关闭全局代理
设置分应用代理

自己搭建 shadowsocks server

可以考虑搬瓦工 20刀一年 可一键搭建shadow server。
自定义配置
http://blog.csdn.net/win_turn/article/details/51559867
一键粗暴
http://jingyan.baidu.com/article/00a07f3842e53982d128dc7d.html

参考资料

[1] ShadowSocks简介
[2] ShadowSocks教程
[3] ShadowSocks Android
[4] 知乎讨论 Ubuntu下怎么使用Shadowsocks
[5] shadowsocks-android client releases page
[6] Linux Shadowsocks 全局代理