├── .gitignore
├── README.md
├── SwitchyOmega
└── SwitchyOmega.crx
├── close.sh
├── h6h6_ss.py
├── ishadow_ss.py
└── run.sh
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | *~
3 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # SS
2 |
3 | ## ChangeLog
4 | * 2018-05-04 添加User-Agent,修复之前请求问题
5 | * 2017-12-30 修复部分正则表达式,又可以正常使用啦~~~
6 | * 2017-8-15 h6h6_ss.py脚本失效
7 |
8 | ## 简介
9 | 这是一个利用爬虫自动从网上获取免费ss账号并且配置本机代理的脚本
10 |
11 | ## 准备
12 |
13 | 需要提前装python和pip
14 |
15 | ### 安装Shadowsocks
16 | ```
17 | pip install shadowsocks
18 | ```
19 | ### Chrome安装SwitchyOmega插件并配置
20 | 将项目中的SwitchyOmega.crx拖向 设置-扩展程序 即可
21 | 安装好之后Chrome右上角有个圈圈,点击圈圈->选项->新建情景模式->随意取个名字->代理协议:SOCKS5,代理服务器:127.0.0.1,代理端口:1080就可以了。
22 | 运行上面的命令,再选择圈圈中刚在新建的情景模式即可
23 | 
24 |
25 |
26 | ### Firefox安装Foxyproxy standard和配置
27 | 打开Firefox浏览器,进入open menu>Add-ons,搜索框内输入Foxyproxy 选择Foxyproxy standard安装。重启浏览器后再来设置浏览器的配置,此时在菜单栏因该可以看到一个狐狸的头,没有的话也没关系,在浏览器的插件管理中一样可以看到它,点开进行设置。
28 | 点击Add New Proxy,选择手动代理,设置本底服务器地址127.0.0.1和端口1080,同时代理方式设置成socks v5,点击OK,完成设置。
29 | 再选择刚刚添加的模式。
30 | 可以看到插件Foxyproxy的图标变成蓝色,表示代理有效。
31 | 
32 |
33 | ## 使用
34 | ### 使用脚本:
35 | `python ishadow_ss.py` 或 `python h6h6_ss.py`
36 |
37 | ishadow有12个免费ss可供切换 http://ss.ishadowx.com/
38 | h6h6有5个免费ss可供切换 http://h6v6.com/
39 |
40 | ### 使用命令
41 | 爬虫不维护的话很快会失效,所有可以在网上找到免费的SS账号或者购买的ss账号,将账号信息添加到命令中对应位置即可。
42 | ```
43 | sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法
44 | ```
45 | 配合nohup和&可以使之后台运行,关闭终端也不影响:
46 | ```
47 | nohup sslocal -s 服务器地址 -p 服务器端口 -l 本地端端口 -k 密码 -m 加密方法 &
48 | ```
49 | 例如:
50 | ```
51 | sslocal -s 104.160.185.150 -p 6123 -l 1080 -k "ntdtv.com" -t 300 -m aes-256-cfb
52 | ```
53 | 如果是长期可使用的ss,将命令写进脚本中使用更方便
54 |
55 | 详细介绍:[Shadowsocks (简体中文)](https://wiki.archlinux.org/index.php/Shadowsocks_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)#.E5.91.BD.E4.BB.A4.E8.A1.8C)
56 |
--------------------------------------------------------------------------------
/SwitchyOmega/SwitchyOmega.crx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zenoyang/ss/6c892d74d58db491a9bfb00c820064dfaa647854/SwitchyOmega/SwitchyOmega.crx
--------------------------------------------------------------------------------
/close.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | killall sslocal
4 |
5 |
--------------------------------------------------------------------------------
/h6h6_ss.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 | import requests
3 | import re
4 | import os
5 |
6 | # yz
7 | # 2017/4/14
8 |
9 | url = 'http://h6v6.com/'
10 |
11 | try:
12 | html = requests.get(url)
13 | os.system('echo get free ss from ' + url)
14 | except:
15 | os.system('echo ' + url + ' failed')
16 | exit(0)
17 |
18 | # pattern = re.compile(r"
([_\da-zA-Z.-]+) | ")
19 | pattern = re.compile('(.*?) | ')
20 | elem = pattern.findall(html.text)
21 |
22 |
23 | ss_info = []
24 | for i in range(0, 35, 7):
25 | if re.match('[_\da-zA-Z.-]+', elem[i+3]):
26 | #print (elem[i+3])
27 | ss_info.append({'ip': elem[i+1], 'port': elem[i+2], 'local_port': '1080', 'password': elem[i+3], 'method': elem[i+4]})
28 |
29 | i = 0
30 | if len(ss_info) == 0:
31 | print (r'没有有效的ss,请访问 http://h6v6.com/ 查看详细信息')
32 | exit(0)
33 | elif len(ss_info) > 1:
34 | i = input('请输入要使用的ss序号(0-{}):'.format(len(ss_info)))
35 | i = int(i)
36 | else:
37 | i = 1
38 |
39 | ss = ss_info[i-1]
40 |
41 | command = "sslocal -s %s -p %s -l %s -k %s -m %s" % (ss.get('ip'),
42 | ss.get('port'), ss.get('local_port'), ss.get('password'), ss.get('method'))
43 |
44 | print (command)
45 | os.system('echo ' + command)
46 | os.system(command)
47 |
48 |
49 |
--------------------------------------------------------------------------------
/ishadow_ss.py:
--------------------------------------------------------------------------------
1 | # _*_ coding: utf-8 _*_
2 |
3 | # yz
4 | # 2017/4/11
5 | # 2017-12-30 修复
6 |
7 | import requests
8 | import re
9 | import os
10 |
11 |
12 | def get_free_ss_info():
13 | # url = 'http://xyz.ishadow.online/'
14 | # url = 'http://free.ishadow.online/'
15 | # url = 'http://ss.ishadowx.com/'
16 | url = 'https://fast.ishadowx.net/'
17 |
18 | headers = {
19 | "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
20 | }
21 |
22 | try:
23 | html = requests.get(url, headers=headers)
24 | except:
25 | os.system('echo ' + url + '访问失败')
26 | return None
27 | os.system('echo get free ss from ' + url)
28 |
29 | # IP_Address
30 | pattern = re.compile(".*?IP Address.*?(.*?)")
31 | ip_address = pattern.findall(html.text)
32 |
33 | # port
34 | pattern = re.compile(".*?Port.*?(.*?)\n") # 2017-12-30 修复
35 | port = pattern.findall(html.text)
36 | for index, item in enumerate(port):
37 | port[index] = re.findall("\d+", item)[0] # 清理':'乱码
38 |
39 | # local_port
40 | local_port = "1080"
41 |
42 | # Password
43 | # 不是每个都有密码,貌似没有提供密码的不能用
44 | pattern = re.compile(".*?Password.*?(.*?)\n") # 2017-12-30 修复
45 | password = pattern.findall(html.text)
46 |
47 | # Method
48 | pattern = re.compile("Method:(.*?)
")
49 | method = pattern.findall(html.text)
50 | ss_infos = []
51 | for i in range(12):
52 | ss_infos.append({'IP_Address': ip_address[i], 'port': port[i], 'local_port': local_port,
53 | 'Password': password[i], 'Method': method[i]})
54 | return ss_infos
55 |
56 |
57 | def main():
58 | ss_infos = get_free_ss_info()
59 |
60 | str = '''
61 | 1-3: 美国
62 | 4-6: 日本
63 | 7-9: 新加坡
64 | 10-12: SSR
65 | '''
66 | print (str)
67 | i = input('请输入要使用的ss序号:')
68 | i = int(i)
69 | ss = ss_infos[i-1]
70 |
71 | command = "sslocal -s %s -p %s -l %s -k %s -m %s" % (ss.get('IP_Address'), ss.get('port'), ss.get('local_port'),
72 | ss.get('Password'), ss.get('Method'))
73 |
74 | os.system('echo ' + command)
75 | os.system(command)
76 |
77 | if __name__ == '__main__':
78 | main()
79 |
--------------------------------------------------------------------------------
/run.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | while true
4 | do
5 | procnum=`ps -ef|grep "sslocal"|grep -v grep|wc -l`
6 | if [ $procnum -eq 0 ]; then
7 | python3 ishadow_ss.py
8 | fi
9 | sleep 30
10 | done
11 |
--------------------------------------------------------------------------------