WaterDragon v1.0:用Github Action实现IP代理功能
字数 1516 2025-08-06 21:48:51
WaterDragon v1.0: 使用GitHub Action实现IP代理功能 - 教学文档
1. 项目概述
WaterDragon v1.0 是一个利用GitHub Action实现IP代理功能的项目,主要目的是通过GitHub的服务器资源创建临时的代理服务器,用于网络安全测试、爬虫开发等场景。
2. 核心原理
该项目基于以下技术原理:
- 利用GitHub Action提供的虚拟机资源作为代理服务器
- 通过定时任务或手动触发保持代理的活跃状态
- 使用SSH或SOCKS协议建立代理通道
3. 实现步骤
3.1 准备工作
- 创建一个新的GitHub仓库
- 确保拥有GitHub账户的足够权限(建议使用个人账户而非组织账户)
3.2 配置文件设置
在项目根目录创建.github/workflows/waterdragon.yml文件,内容模板如下:
name: WaterDragon Proxy
on:
workflow_dispatch: # 允许手动触发
schedule:
- cron: '*/30 * * * *' # 每30分钟运行一次保持活跃
jobs:
proxy:
runs-on: ubuntu-latest
steps:
- name: Set up proxy
run: |
# 安装必要工具
sudo apt-get update && sudo apt-get install -y autossh
# 建立SSH隧道
autossh -M 0 -N -D 1080 -o "ServerAliveInterval 30" -o "ServerAliveCountMax 3" user@your-remote-server &
# 保持运行状态
while true; do sleep 300; done
3.3 代理配置
-
SSH隧道配置:
- 使用
autossh工具建立稳定的SSH隧道 -D 1080参数指定SOCKS代理端口- 需要预先配置SSH密钥对
- 使用
-
SOCKS5代理设置:
- 代理地址:
localhost或GitHub Action虚拟机IP - 端口:1080(可自定义)
- 无需认证(或可配置基础认证)
- 代理地址:
3.4 连接保持策略
- 定时任务:通过
schedule触发每30分钟运行一次 - 手动触发:通过
workflow_dispatch实现按需启动 - 进程保持:使用
while true循环防止Action自动终止
4. 使用技巧
-
IP获取:
- GitHub Action虚拟机的出口IP可通过
curl ifconfig.me获取 - 每次运行可能会分配不同的IP地址
- GitHub Action虚拟机的出口IP可通过
-
多地区代理:
- 通过配置不同的
runs-on标签选择不同地区的GitHub服务器 - 例如:
ubuntu-latest、windows-latest等
- 通过配置不同的
-
流量转发:
- 可结合内网穿透工具将代理服务暴露到公网
- 使用
ngrok或frp等工具实现
5. 注意事项
-
GitHub使用限制:
- 免费账户每月有2000分钟的Action使用时间
- 单个工作流最长运行时间为6小时
- 避免高频触发可能导致的账户限制
-
安全性:
- 不要将敏感信息硬编码在配置文件中
- 使用GitHub Secrets存储SSH密钥等凭证
- 代理服务可能被滥用,建议设置访问控制
-
合规性:
- 确保使用符合GitHub服务条款
- 不建议用于高流量或商业用途
6. 高级配置
6.1 使用Docker容器
steps:
- name: Run proxy container
run: |
docker run -d -p 1080:1080 serjs/go-socks5-proxy
6.2 多端口代理
run: |
autossh -M 0 -N -D 1080 -D 1081 -D 1082 user@remote-server &
6.3 负载均衡
通过多个工作流并行运行实现简单的负载均衡:
strategy:
matrix:
port: [1080, 1081, 1082]
7. 故障排查
-
连接不稳定:
- 增加
ServerAliveInterval和ServerAliveCountMax参数 - 使用
autossh替代普通ssh
- 增加
-
端口冲突:
- 检查端口是否被占用
- 尝试更换其他高端口号
-
认证失败:
- 确认SSH密钥配置正确
- 检查GitHub Secrets是否设置
8. 替代方案讨论
如评论中提到的SCF(Serverless Cloud Function)方案:
- 腾讯云SCF等无服务器函数可实现类似功能
- 通常有更灵活的计费方式
- 需要自行处理代理协议的实现
9. 结论
WaterDragon v1.0提供了一种利用GitHub Action资源建立临时代理的简便方法,适合轻量级、短期的代理需求。对于更稳定或高性能的场景,建议考虑专用代理服务或自建服务器方案。
10. 参考资料
- GitHub Actions官方文档
- autossh手册页
- SOCKS5协议规范
- 相关社区讨论(如评论中提到的SCF方案)