[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80169":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":16,"stars90d":14,"forks30d":14,"starsTrendScore":17,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":14,"starSnapshotCount":14,"syncStatus":16,"lastSyncTime":27,"discoverSource":28},80169,"CF-Workers-TOR","ToiCF\u002FCF-Workers-TOR","ToiCF","CF-Workers-TOR 是一个实验性项目，在 Cloudflare Workers 中内嵌轻量 TLS 客户端，直连 Tor relay，在 TLS 层之上实现 Tor circuit 构建、relay cell 加解密及 BEGIN\u002FDATA 流转发，使 VLESS over WebSocket 流量可经 Tor exit 访问 clearnet 目标。",null,"Python",53,21,51,0,1,2,3,47.23,"GNU General Public License v3.0",false,"main",true,[],"2026-06-12 04:01:27","# CF-Workers-TOR\n\n一个基于 Cloudflare Workers 的实验性 Tor exit 代理。项目使用 `TLSClientMini.js` 在 Worker 内连接 Tor relay，并在 TLS 之上实现基础 Tor circuit \u002F relay cell 转发。\n\n> 这是研究性、学习性代码，用来验证 Workers 内手写 Tor relay TLS 和 exit circuit 的可行性。实际代理体验不保证稳定，速度、延迟和可用性取决于 Cloudflare egress、Workers `connect()`、Tor relay 状态和出口质量。\n\n## 功能特性\n\n- 支持 VLESS over WebSocket over TLS 入口。\n- 支持手动指定 Tor relay path：`\u002Ftor:\u002F\u002F[relay1:port→relay2:port→exit:port]`。\n- 支持 `\u002FgetServ?hops=N` 从 Tor consensus 生成 relay path。\n- 支持 `CREATE2` \u002F `EXTEND2` 建立 Tor circuit。\n- 支持 `BEGIN` \u002F `DATA` 转发普通 clearnet TCP 目标。\n- 使用 `TLSClientMini.js` 连接真实 Tor relay，而不是依赖浏览器\u002F系统 Tor 客户端。\n\n## 不支持\n\n- 不支持纯 `.onion` \u002F hidden service \u002F onion service。\n- 不支持完整 Tor Browser \u002F 完整 Tor client 行为。\n- 不支持完整 Tor directory 验证。\n- 不支持完整 stream multiplexing；当前 WebSocket 连接主要对应单个 stream。\n\n## 文件结构\n\n| 文件 | 说明 |\n| --- | --- |\n| [TLSClientMini.js](.\u002FTLSClientMini.js) | 最小 TLS 客户端，用于连接 Tor relay。 |\n| [TOR.js](.\u002FTOR.js) | Worker 源文件，不内联 TLS。 |\n| [TOR-merged.js](.\u002FTOR-merged.js) | 部署用单文件，内联 `TOR.js` + `TLSClientMini.js`。 |\n| [TorHS-Circuit.py](.\u002FTorHS-Circuit.py) | Python onion service 实验参考，不属于 Worker 主线。 |\n\n## 部署方式\n\n### Cloudflare Workers\n\n1. 创建一个 Cloudflare Worker。\n2. 使用 Module Worker 格式部署 `TOR-merged.js`。\n3. 确保部署环境支持 `cloudflare:sockets` TCP 出站连接。\n4. 访问 Worker 域名，普通 HTTP 请求返回 `ok`。\n\n`TOR-merged.js` 是部署产物；改逻辑时优先改 `TOR.js` \u002F `TLSClientMini.js`，再重新生成部署文件。\n\n## 配置项\n\n当前主要配置在源码顶部：\n\n| 配置 | 说明 |\n| --- | --- |\n| `uuid` | VLESS 用户 UUID。 |\n| `maxED` | `sec-websocket-protocol` early data 最大长度，当前为 `8192`。 |\n| `\u002FgetServ?hops=N` | 自动生成 relay path 的跳数，限制在 `1..8`。 |\n\n## 入口协议\n\n客户端入口使用 VLESS over WebSocket over TLS 的节点格式。`TOR.js` 只解析当前代理入口需要的 VLESS 首包和响应头，不绑定具体客户端实现，也不是完整代理内核。\n\n外层入口和内层 Tor circuit 是两层协议：\n\n```text\n客户端 --VLESS\u002FWS\u002FTLS--> Worker --Tor relay TLS + Tor cells--> Tor relay path\n```\n\n## 节点格式\n\nWorker WebSocket path 使用 Tor relay path：\n\n```text\n\u002Ftor:\u002F\u002F[relay1_ip:port→relay2_ip:port→exit_ip:port]&ed=2560\n```\n\n说明：\n\n- `[]` 内是 Tor relay 路径。\n- relay 之间用 `→` 分隔。\n- 最后一跳是 exit relay。\n- `ed=2560` 是 VLESS early data 参数。\n- 这是普通 Tor relay path，不是 `.onion` 地址。\n\nVLESS 分享链接模板：\n\n```text\nvless:\u002F\u002F\u003Cuuid>@\u003Cfront-host>:\u003Cfront-port>\u002F?type=ws&encryption=none&flow=&host=\u003Cworker-host>&path=%2Ftor%3A%2F%2F%5B\u003Crelay1_ip>%3A\u003Cport>%E2%86%92\u003Crelay2_ip>%3A\u003Cport>%E2%86%92\u003Cexit_ip>%3A\u003Cport>%5D%26ed%3D2560&security=tls&sni=\u003Cworker-host>&fp=chrome&packetEncoding=xudp#TOR\n```\n\n字段说明：\n\n| 字段 | 说明 |\n| --- | --- |\n| `\u003Cuuid>` | 与 `TOR.js` 中的 `uuid` 一致。 |\n| `\u003Cfront-host>:\u003Cfront-port>` | 客户端连接入口。 |\n| `host` \u002F `sni` | Worker 域名。 |\n| `path` | URL 编码后的 `\u002Ftor:\u002F\u002F[...]&ed=2560`。 |\n| `security=tls` | 客户端到入口使用 TLS。 |\n| `packetEncoding=xudp` | 客户端侧参数；Worker 这里按 WebSocket\u002FVLESS TCP 流处理。 |\n\n## API\n\n### `GET \u002F`\n\n健康检查。\n\n```text\nok\n```\n\n### `GET \u002FgetServ?hops=3`\n\n从 consensus 中选择 relay，返回可直接放入节点 path 的 Tor relay path。\n\n响应示例：\n\n```text\n\u002Ftor:\u002F\u002F[guard_ip:port→middle_ip:port→exit_ip:port]\n```\n\n规则：\n\n- `hops=1`：只选一个 exit relay。\n- `hops>=2`：选择 guard \u002F middle \u002F exit 结构。\n- 返回的是 clearnet exit path，不是 onion service path。\n\n### WebSocket 入口\n\n客户端使用 VLESS over WebSocket 连接 Worker。Worker 解析 VLESS 首包后，将目标 `host:port` 转成 Tor `BEGIN` stream。\n\n## 实现路径\n\n普通 clearnet 请求流程：\n\n```text\nVLESS\u002FWS 客户端\n  → Worker\n  → 解析 \u002Ftor:\u002F\u002F[...] relay path\n  → TLSClientMini 连接第一跳 Tor relay\n  → CREATE2 建第一跳\n  → EXTEND2 扩展后续 relay\n  → BEGIN 连接目标 host:port\n  → DATA 双向转发\n```\n\n当前实现的 Tor 能力：\n\n- Tor relay TLS；\n- ntor key 派生；\n- AES-CTR relay cell 加解密；\n- SHA1 relay digest；\n- consensus 获取；\n- relay `ntor-onion-key` 查询和缓存。\n\n## `.onion` 支持说明\n\n当前不能访问 `.onion`。原因不是缺少 DNS，而是 `.onion` 访问需要完整 onion service 流程：\n\n```text\n.onion identity\n  → HSDir 选择\n  → descriptor 获取、验签、解密\n  → introduction points\n  → introduction circuit\n  → rendezvous circuit\n  → INTRODUCE1 \u002F RENDEZVOUS2\n  → onion service stream\n```\n\n`TOR.js` 只实现普通 exit circuit；`TorHS-Circuit.py` 只是 Python 实验参考，用于研究 HSDir、descriptor、intro、rendezvous 这条更重的路径。\n\n## 注意事项\n\n- 这是协议实验项目，不是稳定代理产品。\n- relay path 质量会明显影响成功率和速度。\n- 大文件、长连接、复杂网页加载都可能受 Workers 和 Tor relay 状态影响。\n- 公开部署前请自行处理访问控制和 UUID 管理。\n\n## 相关链接\n\n- 开源协议：[GPL-3.0](.\u002FLICENSE)\n- 交流群组：[Telegram](https:\u002F\u002Ft.me\u002FEnkelte_notif)\n- Arti 源码：\u003Chttps:\u002F\u002Fgitlab.torproject.org\u002Ftpo\u002Fcore\u002Farti>\n- Tor 官方源码：\u003Chttps:\u002F\u002Fgitlab.torproject.org\u002Ftpo\u002Fcore\u002Ftor>\n\n## Stargazers over time\n\n[![Stargazers over time](https:\u002F\u002Fstarchart.cc\u002FToiCF\u002FCF-Workers-TOR.svg?variant=adaptive)](https:\u002F\u002Fstarchart.cc\u002FToiCF\u002FCF-Workers-TOR)\n","CF-Workers-TOR 是一个实验性项目，旨在通过 Cloudflare Workers 实现 Tor exit 代理功能。它利用 `TLSClientMini.js` 在 Worker 内连接 Tor relay，并在 TLS 层之上构建和管理 Tor circuit，支持 VLESS over WebSocket 流量经由 Tor exit 访问公网目标。项目核心在于其轻量级 TLS 客户端实现及手动指定或自动生成的 Tor relay 路径支持，适合用于研究和学习如何在受限环境中部署简易版 Tor 出口节点，但不适用于需要完整 Tor 功能（如访问.onion服务）的场景。尽管实际使用时可能面临稳定性与性能挑战，该项目为探索Cloudflare Workers 的网络能力提供了有价值的参考。","2026-06-11 03:59:30","CREATED_QUERY"]