本工具通过 GitHub Actions 定时从多个网页采集 IP 地址,对第一个网页的 IP 按速度筛选出最优 5 个,第二个网页的 IP 全部采集,并为所有 IP 添加国家代码,最终保存到文件中。
- 多源采集:同时从两个不同结构的网页采集 IP 地址
- 第一个网页:从表格中提取 IP 及速度信息,筛选速度最快的 5 个(示例网址:
https://example.com/ip-source1) - 第二个网页:直接提取纯文本格式的所有 IP(示例网址:
https://example.com/ip-source2)
- 第一个网页:从表格中提取 IP 及速度信息,筛选速度最快的 5 个(示例网址:
- 国家代码标注:为所有采集到的 IP 标注国家代码(如
CN、US) - 自动定时执行:通过 GitHub Actions 实现每 4 小时自动运行
- 结果合并保存:将两个网页的结果合并保存到
89.txt文件
.
├── ip_scraper.py # 核心脚本,负责 IP 采集与处理
├── 89.txt # 保存最终 IP 结果的文件
└── .github/
└── workflows/
└── ip-scraper.yml # GitHub Actions 配置文件
-
Fork 仓库:点击右上角 "Fork" 按钮,将本仓库复制到你的 GitHub 账号下
-
启用 GitHub Actions:
- 进入你的仓库页面
- 点击 "Actions" 标签
- 点击 "Enable workflows" 按钮启用工作流
-
查看结果:
- 每次执行后,IP 地址会保存在
89.txt文件中 - 执行日志可在 GitHub Actions 运行记录中查看
- 每次执行后,IP 地址会保存在
在 ip_scraper.py 中可修改采集的网页 URL(示例为虚构地址,需替换为真实网址):
html_url = "https://example.com/ip-source1" # 第一个网页,含 IP 速度信息
text_url = "https://example.com/ip-source2" # 第二个网页,纯文本 IP在 .github/workflows/ip-scraper.yml 中修改 cron 表达式(示例为每 4 小时执行一次):
on:
schedule:
- cron: '0 */4 * * *' # 每 4 小时执行一次89.txt 文件中包含两部分内容:
-
第一个网页的最优 5 个 IP(带速度信息,示例 IP 为虚构):
192.168.1.100#US-25.50MB/s 192.168.1.101#US-24.80MB/s 192.168.1.102#CA-23.70MB/s 192.168.1.103#DE-22.90MB/s 192.168.1.104#UK-21.50MB/s -
第二个网页的所有 IP(只有国家代码,示例 IP 为虚构):
10.0.0.1#CN 10.0.0.2#JP 10.0.0.3#KR 10.0.0.4#FR 10.0.0.5#IT
-
IP 采集:
- 第一个网页:使用 BeautifulSoup 解析 HTML 表格,提取 IP 和速度
- 第二个网页:直接读取纯文本内容,按行分割获取 IP
-
速度筛选:
- 将速度单位统一转换为 KB/s 进行比较
- 按速度从快到慢排序,取前 5 个
-
国家代码获取:
- 调用
ipinfo.ioAPI 查询 IP 所属国家代码 - 查询失败时默认返回
XX
- 调用
- Python 3.10+
- 第三方库:
requests,beautifulsoup4
-
创建 Telegram Bot:
- 搜索 @BotFather 并发送
/newbot - 创建 Bot 后获取 API Token(示例:
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)
- 搜索 @BotFather 并发送
-
获取聊天 ID:
- 搜索 @getchatid_echo_bot 并发送任意消息
- 机器人会回复你的聊天 ID(示例:
123456789)
-
配置仓库秘密:
- 在仓库 Settings → Secrets 中添加:
TELEGRAM_BOT_TOKEN:Bot 的 API TokenTELEGRAM_CHAT_ID:你的聊天 ID
- 在仓库 Settings → Secrets 中添加:
⏰ 2023-01-01 12:00:00
开始运行 *IP采集工具* 项目脚本,对以下网页解析:
1. https://example.com/ip-source1
2. https://example.com/ip-source2
已获取优选IP并保存到文件:`89.txt`
89.txt文件会作为附件显示在通知下方
- 原因:
ipinfo.io免费 API 有每日请求限制(约 1000 次) - 解决方案:可注册账号获取付费 API 密钥,或更换为其他 IP 地理位置查询服务
- 原因:目标网页的 HTML 结构发生变化
- 解决方案:修改
ip_scraper.py中的解析逻辑,适配新的网页结构
- 原因:可能是权限问题或依赖安装失败
- 解决方案:
- 确保仓库有写入权限
- 检查
ip-scraper.yml配置是否正确 - 查看 Actions 运行日志,排查具体错误
本项目包含一个自动清理 GitHub Actions 运行记录的工作流脚本:
- 脚本位置:
.github/workflows/delete-all-runs.yml - 功能:每两个月定时自动批量删除所有 Actions 运行历史,减少仓库空间占用。
- 触发方式:
- 定时:每年 1、3、5、7、9、11 月的 1 日 00:00(UTC)自动触发
- 手动:进入 GitHub Actions 页面手动触发
-
生成并保存 Token
在 GitHub 个人设置生成一个带有repo和actions权限的 PAT(Personal Access Token)。 在仓库设置 → Secrets → Actions 新建名为ACTIONS_DELETE_TOKEN的 secret,并填写该 Token。 -
注意事项
- 一定要使用有删除权限的 Token(官方 GITHUB_TOKEN 无法删除)。
- 建议定期备份你的 workflow 历史数据。
本项目采用 MIT 许可证,详情见 LICENSE 文件。
以下是本项目 Stars 数量随时间的变化趋势(自动更新):