You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
2 weeks ago | |
---|---|---|
README.MD | 2 weeks ago | |
config.cfg | 2 weeks ago | |
renew_ip.py | 2 weeks ago | |
requirements.txt | 5 years ago |
README.MD
IP白名单自动更新工具
这是一个用于自动检测公网IP变化并更新代理白名单的工具。当检测到公网IP发生变化时,会自动调用API更新指定索引位置的IP白名单。
功能特性
- 自动检测公网IP变化
- IP变化时自动更新代理白名单
- 支持Python 2.7和Python 3.x
- 可配置检测间隔和白名单索引
- 详细日志记录
配置文件 config.cfg
创建config.cfg
文件并配置以下参数:
[main]
# 代理API的URL地址
url=http://ip.16yun.cn:817/myip/pl/1111111-40a0-115b-1173-3a66ce51110f/?s=2222222&u=test
# IP白名单编号,从0开始
# 不同机器配置不同编号,相同公网IP的内网机器使用相同编号
index=0
# 示例说明:
# 场景1:三台不同公网IP的服务器
# 服务器A (公网IP: 1.1.1.1) -> index=0
# 服务器B (公网IP: 2.2.2.2) -> index=1
# 服务器C (公网IP: 3.3.3.3) -> index=2
# 场景2:同一公网IP下的多台内网机器
# 办公室路由器公网IP: 4.4.4.4
# 内网机器A (192.168.1.10) -> index=0
# 内网机器B (192.168.1.11) -> index=0 (相同公网IP,使用相同索引)
# 内网机器C (192.168.1.12) -> index=0 (相同公网IP,使用相同索引)
# 场景3:混合环境
# 家庭网络 (公网IP: 5.5.5.5) -> index=0
# 公司网络 (公网IP: 6.6.6.6) -> index=1
# 云服务器 (公网IP: 7.7.7.7) -> index=2
# IP检测更新间隔,单位:秒
wait=60
配置参数说明
- url: 代理服务商提供的API接口地址,用于更新IP白名单
- index: IP白名单编号,从0开始计数
- 不同的机器应配置不同的编号
- 位于相同公网IP下的内网机器可以使用相同编号
- wait: IP检测间隔时间,单位为秒(建议不少于30秒)
安装运行
- 安装依赖包:
pip install -r requirements.txt
- 创建requirements.txt文件(如果不存在):
requests
-
配置config.cfg文件
-
运行程序:
# 前台运行
python renew_ip.py
# 后台运行
nohup python renew_ip.py &
工作原理
- 程序启动后会定期(根据wait配置)检测当前公网IP
- 通过访问
http://current-ip.16yun.cn:802
获取当前公网IP - 如果检测到IP发生变化,会调用配置的API接口更新白名单
- 更新时会在API URL后添加参数:
index=[配置的索引]&newip=[新IP]
- 所有操作都会记录到
log.txt
日志文件中
日志文件
程序运行时会在当前目录生成log.txt
日志文件,记录:
- IP检测结果
- IP变化通知
- API调用结果
- 错误信息
兼容性
- 支持Python 2.7
- 支持Python 3.x
- 跨平台兼容(Windows/Linux/macOS)
API参考
白名单IP操作
基于代码逻辑,API调用方式:
自动更新指定索引的IP:
- 程序会自动在配置的URL后添加参数:
&index=[索引号]&newip=[新IP地址]
- 例如:
原URL&index=0&newip=192.168.1.100
手动API调用参考:
- 添加IP到白名单:在链接后面加上
&limitip=append&newip=[ip]
- 修改指定位置IP:在链接后面加上
&limitip=append&newip=[ip]&index=[索引]
[ip]
: 需要添加/修改的IP地址[index]
: IP在白名单中的索引位置,-1为最后一个,0为第一个
注意事项
- 确保网络连接正常,能够访问IP检测和API接口
- API接口需要有效,否则IP更新会失败
- 建议将wait时间设置为60秒或更长,避免频繁请求
- 定期检查日志文件,确保程序正常运行