├── .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 | ![SwitchyOmega](http://oqnf3xv0b.bkt.clouddn.com/17-12-30/45168816.jpg) 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 | ![Foxyproxy](http://oe7jbxyeb.bkt.clouddn.com/Using%20Shadowsocks%20to%20gain%20Google%2002.png) 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 | --------------------------------------------------------------------------------