├── sock5.jpg ├── Shadowsocks.jpg ├── .github └── workflows │ └── UpstreamSync.yml └── README.md /sock5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Naxavor/five-worker/HEAD/sock5.jpg -------------------------------------------------------------------------------- /Shadowsocks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Naxavor/five-worker/HEAD/Shadowsocks.jpg -------------------------------------------------------------------------------- /.github/workflows/UpstreamSync.yml: -------------------------------------------------------------------------------- 1 | name: Upstream Sync 2 | 3 | permissions: 4 | contents: write 5 | 6 | on: 7 | schedule: 8 | - cron: "0 0 * * *" 9 | workflow_dispatch: 10 | 11 | jobs: 12 | sync_latest_from_upstream: 13 | name: Sync latest commits from upstream repo 14 | runs-on: ubuntu-latest 15 | if: ${{ github.event.repository.fork }} 16 | 17 | steps: 18 | - name: Checkout target repo 19 | uses: actions/checkout@v3 20 | 21 | - name: Detect Upstream Info 22 | id: detect 23 | env: 24 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 25 | run: | 26 | REPO_INFO=$(gh repo view ${{ github.repository }} --json parent,defaultBranch) 27 | 28 | UPSTREAM_REPO=$(echo "$REPO_INFO" | jq -r '.parent.full_name') 29 | UPSTREAM_BRANCH=$(echo "$REPO_INFO" | jq -r '.parent.default_branch') 30 | TARGET_BRANCH=$(echo "$REPO_INFO" | jq -r '.default_branch') 31 | 32 | if [ "$UPSTREAM_REPO" = "null" ]; then 33 | echo "Error: Not a fork." 34 | exit 1 35 | fi 36 | 37 | echo "upstream_repo=$UPSTREAM_REPO" >> $GITHUB_OUTPUT 38 | echo "upstream_branch=$UPSTREAM_BRANCH" >> $GITHUB_OUTPUT 39 | echo "target_branch=$TARGET_BRANCH" >> $GITHUB_OUTPUT 40 | 41 | - name: Sync upstream changes 42 | id: sync 43 | uses: aormsby/Fork-Sync-With-Upstream-action@v3.4 44 | with: 45 | upstream_sync_repo: ${{ steps.detect.outputs.upstream_repo }} 46 | upstream_sync_branch: ${{ steps.detect.outputs.upstream_branch }} 47 | target_sync_branch: ${{ steps.detect.outputs.target_branch }} 48 | target_repo_token: ${{ secrets.GITHUB_TOKEN }} 49 | test_mode: false 50 | 51 | - name: Sync check 52 | if: failure() 53 | run: | 54 | exit 1 55 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CF Worker/Pages 五协议节点 2 | * **VLESS\TROJAN\XHTTP\Shadowsocks\Socks5五协议** 3 | * 部署成功后访问https://你的域名/你设置的UUID或KEY。建议不设置环境变量直接访问https://你的域名,会提示你设置KEY或UUID 4 | * 设置成功后https://你的域名/你设置的UUID或KEY进入节点信息页面,推荐在编辑配置页面设置访问密码,以后进行节点信息页面需输入密码,保护节点不被盗用,信息不被别人修改。大家合理使用,为没有机场的小伙伴提供一个备用的失联节点 5 | ## 1. 部署与功能说明 6 | 7 | ### 核心设置 8 | * **XHTTP 协议**:需绑定自定义域名,必须在 Cloudflare 域名下的 **左侧网络菜单** 中开启 **gRPC** 功能,否则无法连通,只能worker,pages不支持。 9 | * ***原始没有配置PROXYIP,请自行配置。*** 10 | * **节点导入说明**: 11 | * **Shadowsocks**:无法直接导入,需查看生成的节点信息后手动配置。 12 | * **Socks5**:导入后信息可能不完整,需手动补充配置。 13 | * Shadowsocks配置图示![Shadowsocks配置图示](Shadowsocks.jpg) 14 | * socks5配置图示![socks5配置图示](sock5.jpg) 15 | * **初始密码**:初次部署后访问 Worker/page 地址,会自动弹出设置密码的界面,用于生成动态UUID,TROJAN等密码,需设置KV,名称为KV,或者设置环境变量UUID或KEY。 16 | * **访问密码**:初次部署后访问 Worker/page 地址,编辑配置页面可以设置访问密码,用于保护节点配置信息不会被别人随意修改,需设置KV,或者设置环境变量ADMIN_PASS。 17 | ### 路径功能 18 | * `Socks5路径: 留空。 19 | * `默认路径/?ed=2560被CF识别存在不稳定情况,可修改为其他`。 20 | 21 | --- 22 | 23 | ## 2. 配置优先级与容错机制 24 | 25 | 本程序支持三种方式设置参数,加载优先级如下: 26 | 27 | 1. **KV (键值存储)** 28 | 2. **远程配置 (Remote Config)** 29 | 3. **环境变量 (Environment Variables)** 30 | 31 | **运行逻辑**: 32 | * **KV 限制**:免费版 Cloudflare Workers 的 KV 有读取次数限制。当 KV 无法读取时,系统会自动退回到 **远程配置**。 33 | * **兜底策略**:如果远程配置也失效,将使用 **环境变量** 保证节点基本运行。 34 | * **免部署更新**:使用 KV 或远程配置修改参数时,**无需重新部署代码**。 35 | 36 | --- 37 | ### 远程配置 38 | `环境变量设置REMOTE_CONFIG`值为远程文件直链地址 39 | ## 3. 远程配置文件模板 (config.json) 40 | 41 | 您可以将以下 JSON 内容保存为 `config.json` 并上传至 GitHub、Gist 或其他直链地址,然后在 Cloudflare 环境变量中设置 `REMOTE_CONFIG` 指向该文件地址。 42 | 43 | ```json 44 | { 45 | "UUID": "", 46 | "KEY": "", 47 | 48 | "TIME": "99999", 49 | "UPTIME": "0", 50 | 51 | "PROXYIP": "", 52 | "DNS64": "64:ff9b::/96", 53 | "SOCKS5": "", 54 | "GO2SOCKS5": "", 55 | "BAN": "", 56 | 57 | "URL302": "", 58 | "URL": "", 59 | 60 | "SUBNAME": "MyWorkerSub", 61 | "ADD": "[www.visa.com](https://www.visa.com).tw:443#台湾Visa, [2606:4700::]:443#IPv6官方", 62 | "ADDAPI": "[https://raw.githubusercontent.com/username/repo/main/ips.txt](https://raw.githubusercontent.com/username/repo/main/ips.txt)", 63 | "ADDNOTLS": "[www.visa.com](https://www.visa.com).sg:80#新加坡非TLS", 64 | "ADDNOTLSAPI": "", 65 | "ADDCSV": "[https://raw.githubusercontent.com/username/repo/main/speed.csv](https://raw.githubusercontent.com/username/repo/main/speed.csv)", 66 | "LINK": "vless://..., vmess://...", 67 | 68 | "CFPORTS": "443, 8443, 2053, 2083, 2087, 2096", 69 | "DLS": "8", 70 | "CSVREMARK": "1", 71 | "EX": "false" 72 | } 73 | ================================================================================ 74 | 参数详细说明表 75 | ================================================================================ 76 | | 参数名 | 必填 | 类型 | 说明 | 77 | ================================================================================ 78 | | UUID | 是 | 字符串 | 主用户ID (任意组合,是生成动态UUID的KEY),也是 Trojan/SS 的密码 | 79 | | KEY | 否 | 字符串 | 动态UUID密钥,填写后会覆盖上方静态UUID | 80 | | TIME | 否 | 数字 | 动态UUID的有效周期(天),默认 99999 | 81 | | UPTIME | 否 | 数字 | 动态UUID在当天的更新时间(0-23点) | 82 | -------------------------------------------------------------------------------- 83 | | PROXYIP | 否 | 字符串 | 出站代理IP(解决CF脏IP),支持IPv4/IPv6,逗号分隔 | 84 | | DNS64 | 否 | 字符串 | NAT64地址(如 64:ff9b::/96),用于IPv6访问IPv4资源 | 85 | | SOCKS5 | 否 | 字符串 | 前置代理,格式: user:pass@host:port | 86 | | GO2SOCKS5 | 否 | 字符串 | 指定走SOCKS5的域名,支持通配符*,填"all in"全走 | 87 | | BAN | 否 | 字符串 | 禁止访问的域名黑名单,逗号分隔 | 88 | -------------------------------------------------------------------------------- 89 | | URL302 | 否 | 字符串 | 访问Worker主页时 302 跳转到的网址(优先级>URL) | 90 | | URL | 否 | 字符串 | 访问Worker主页时 伪装反代的网址 | 91 | -------------------------------------------------------------------------------- 92 | | SUBNAME | 否 | 字符串 | 订阅文件下载时的默认文件名 | 93 | | ADD | 否 | 字符串 | 手动添加优选节点,格式: 地址:端口#备注 | 94 | | ADDAPI | 否 | 字符串 | 远程优选IP列表(TXT格式)的下载链接 | 95 | | ADDNOTLS | 否 | 字符串 | 手动添加非TLS节点(80端口等) | 96 | | ADDNOTLSAPI | 否 | 字符串 | 远程非TLS节点列表的下载链接 | 97 | | ADDCSV | 否 | 字符串 | CloudflareSpeedTest 测速结果 CSV 文件的链接 | 98 | | LINK | 否 | 字符串 | 硬编码节点链接(vless://等),直接合并到订阅中 | 99 | -------------------------------------------------------------------------------- 100 | | CFPORTS | 否 | 字符串 | 订阅中包含的TLS端口,默认为443,8443等6个端口 | 101 | | DLS | 否 | 数字 | 速度阈值,CSV测速大于此值(MB/s)才显示节点 | 102 | | CSVREMARK | 否 | 数字 | CSV文件中备注所在的列号(索引从0开始) | 103 | | EX | 否 | 字符串 | 是否开启 XHTTP 协议 (true/false) | 104 | ================================================================================ 105 | 106 | [注意] 107 | 1. JSON 文件不支持注释,请在实际使用 config.json 时删除所有非 JSON 内容。 108 | 2. 确保 JSON 格式正确(例如:最后一项后面不要加逗号)。 109 | --------------------------------------------------------------------------------