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 准备工作

  1. 创建一个新的GitHub仓库
  2. 确保拥有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 代理配置

  1. SSH隧道配置

    • 使用autossh工具建立稳定的SSH隧道
    • -D 1080参数指定SOCKS代理端口
    • 需要预先配置SSH密钥对
  2. SOCKS5代理设置

    • 代理地址:localhost或GitHub Action虚拟机IP
    • 端口:1080(可自定义)
    • 无需认证(或可配置基础认证)

3.4 连接保持策略

  1. 定时任务:通过schedule触发每30分钟运行一次
  2. 手动触发:通过workflow_dispatch实现按需启动
  3. 进程保持:使用while true循环防止Action自动终止

4. 使用技巧

  1. IP获取

    • GitHub Action虚拟机的出口IP可通过curl ifconfig.me获取
    • 每次运行可能会分配不同的IP地址
  2. 多地区代理

    • 通过配置不同的runs-on标签选择不同地区的GitHub服务器
    • 例如:ubuntu-latestwindows-latest
  3. 流量转发

    • 可结合内网穿透工具将代理服务暴露到公网
    • 使用ngrokfrp等工具实现

5. 注意事项

  1. GitHub使用限制

    • 免费账户每月有2000分钟的Action使用时间
    • 单个工作流最长运行时间为6小时
    • 避免高频触发可能导致的账户限制
  2. 安全性

    • 不要将敏感信息硬编码在配置文件中
    • 使用GitHub Secrets存储SSH密钥等凭证
    • 代理服务可能被滥用,建议设置访问控制
  3. 合规性

    • 确保使用符合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. 故障排查

  1. 连接不稳定

    • 增加ServerAliveIntervalServerAliveCountMax参数
    • 使用autossh替代普通ssh
  2. 端口冲突

    • 检查端口是否被占用
    • 尝试更换其他高端口号
  3. 认证失败

    • 确认SSH密钥配置正确
    • 检查GitHub Secrets是否设置

8. 替代方案讨论

如评论中提到的SCF(Serverless Cloud Function)方案:

  • 腾讯云SCF等无服务器函数可实现类似功能
  • 通常有更灵活的计费方式
  • 需要自行处理代理协议的实现

9. 结论

WaterDragon v1.0提供了一种利用GitHub Action资源建立临时代理的简便方法,适合轻量级、短期的代理需求。对于更稳定或高性能的场景,建议考虑专用代理服务或自建服务器方案。

10. 参考资料

  1. GitHub Actions官方文档
  2. autossh手册页
  3. SOCKS5协议规范
  4. 相关社区讨论(如评论中提到的SCF方案)
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 文件,内容模板如下: 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地址 多地区代理 : 通过配置不同的 runs-on 标签选择不同地区的GitHub服务器 例如: ubuntu-latest 、 windows-latest 等 流量转发 : 可结合内网穿透工具将代理服务暴露到公网 使用 ngrok 或 frp 等工具实现 5. 注意事项 GitHub使用限制 : 免费账户每月有2000分钟的Action使用时间 单个工作流最长运行时间为6小时 避免高频触发可能导致的账户限制 安全性 : 不要将敏感信息硬编码在配置文件中 使用GitHub Secrets存储SSH密钥等凭证 代理服务可能被滥用,建议设置访问控制 合规性 : 确保使用符合GitHub服务条款 不建议用于高流量或商业用途 6. 高级配置 6.1 使用Docker容器 6.2 多端口代理 6.3 负载均衡 通过多个工作流并行运行实现简单的负载均衡: 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方案)