Python
自动修复基于阿里搭建的Shadowsocks
科学上网服务由于阿里经常封杀SS协议, 导致上网非常不稳定, 所以写了个脚本定时自动修复
但目前发现封的特别快, 要想拥有一个特别稳定的环境, 建议还是用微软Azure, 利用
虚拟网络网关
打通国际Azure香港节点
和国内Azure北京节点
, 但这个收费就高了, 每个月得两三千, 如果不是业务强需求还是别搞了
本项目地址 GitHub
说明
在阿里云新加坡地区购买了一台低配ECS,搭建了Ss服务端
由于阿里云经常封杀SS协议对应的公网入口,所以我把入口调整为临时的公网负载均衡 (这样封杀的时候就是封杀的负载均衡了)
脚本检测到负载均衡的端口或者IP被封后, 会自动创建一个新的负载均衡并建立监听端口, 然后更新DNS及Hosts记录并删除旧负载均衡
一套流程下来, 虽然有一定的延时, 但基本能自动化操作修复, 不用人为干预了。
前提条件
全部基于阿里云
阿里云ECS、负载均衡、云解析DNS
脚本流程
├── README.md
├── requirements.txt
├── check.py # 检查相关函数, 检查域名的端口是否正常,通过域名解析IP
├── dns.py # 阿里云云解析DNS相关函数, 查询/修改DNS记录, 更新本地Hosts
├── main.py # 主程序入口,集合其他脚本函数
└── slb.py # 阿里云负载均衡相关函数, 创建/删除负载均衡,创建/启动监听端口,添加后端服务器
0 directories, 6 files
main.py
中定义阿里云相关变量及host
变量 (负载均衡公网IP对应的域名 或者直接写IP,如果写IP请注释DNS相关函数调用,建议用域名)检查域名对应端口是否正常,正常则
退出
,否则新建负载均衡
、添加后端服务器
、建立监听
、启动监听
等待
10s
后再次检查新负载均衡的IP对应端口是否正常,正常则删除旧负载均衡
并更新DNS
及本地Hosts
后退出,否则打印log后退出更新本地Hosts的原因是 方式再下一轮检测LB时DNS还没完全更新, 导致一直创建删除LB
依赖
- Python 3 (我的环境是3.5.2)
- Crontab
- 以及一些python依赖见
requirements.txt
使用
$ git clone https://github.com/sungaomeng/ssproxy-repair.git |
日志
目前并没有输出到log, 仅是打印到前台
Domain:ss.roobo.net HostIp:161.**.**.186 Port:8388 is not open, return code:35 |