Giter VIP home page Giter VIP logo

cmliu / edgetunnel Goto Github PK

View Code? Open in Web Editor NEW

This project forked from zizifn/edgetunnel

9.6K 9.6K 4.8K 9.21 MB

在原版的基础上修改了显示 VLESS 配置信息转换为订阅内容。使用该脚本,你可以方便地将 VLESS 配置信息使用在线配置转换到 Clash 或 Singbox 等工具中。

License: GNU General Public License v2.0

JavaScript 100.00%
v2ray v2ray-worker vless vless-ws-tls

edgetunnel's Introduction

CMLiu's GitHub Stats

🤖 欢迎来到我的 GitHub 仓库! 🚀

🐟️ 我是一位热爱技术和解决问题的咸鱼。我的开源项目诞生于日常生活中遇到的各种小难题和需求。

🎉 感谢你的到访,希望你在这里能找到你需要的东西!

[点击展开] 赞赏支持 ~🧧

我非常感谢您的赞赏和支持,它们将极大地激励我继续创新,持续产生有价值的工作。

  • ERC20/BEP20: 0x60ffd0df36fb35550e7fe52ad2faae88a4a91b22
  • TRC20: TDizmMPgy7cVUr5GsagkNGxyg2rJgf4FNf

🎁 你的支持是我不断前进的动力! 💖

✈️ 自用机场推荐 🛩️ YkkCloud 月付低至10.5元起,更有住宅IP线路,不限在线设备数量

edgetunnel's People

Contributors

cmliu avatar cuteist avatar emo-damage avatar etfans avatar github-actions[bot] avatar github-neo avatar klipsis avatar wy580477 avatar ybjj avatar zizifn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

edgetunnel's Issues

Error 1101

部署过后显示 1101错误

Error 1101 Ray ID: 88168b0c88be9842 • 2024-05-10 02:36:42 UTC
Worker threw exception

生成的Clash Meta代码不起效。

刚刚升级了4月1日的Work.zip, 发现不再有效了。

就是clash meta代没有作用。。把代码加入到自己的yaml文件中,并使用openclash
通过Openclash的测试,无法返回任何信息,强制使用这个节点,也无法科学上网。

但是v2ray链接和原始链接,都可以使用,一切是正常的。


补充
找到原因了,原来是域名被墙了。。换个自定义域名,就好了。

proxies name requires quotation marks

直接將訂閱地址扔給V2RAY及PASSWALL,會造成主機名稱的流水號被濾掉,因此更新訂閱時,清單只會一直增加,不會覆寫。
估計可能是proxy name沒有加引號的關係。

image

获取订阅内容是空的

之前正常使用
现在无法获取任何内容:
image
换成自己的转换器、重新部署、重新搭建pages都还是获取空订阅

clash订阅节点问题

完全使用原版pg方式,订阅未使用任何第三方转换,客户端也未转换,但是clash里的自动选择只有四项地区,而实际可选地区确有多项。那么自动选择就选不到其他的了?故障转移也一样。如图:
Screenshot_20240310_005004
Screenshot_20240310_004958
所以能不能把故障转移和自动选择加上所有地区项??拜托了

更新订阅失败

Error fetching content: atob() called with invalid base64-encoded data. (Only whitespace, '+', '/', alphanumeric ASCII, and up to two terminal '=' signs when the input data length is divisible by 4 are allowed.)

522错误

worker部署的出现522错误,pages不会。
image

ClashXPro unsport proxy:vless

如题,我的clash不支持 vless,请问各位有什么好的办法么?除了用别的软件,我的mac和windows都不行。

小火箭问题

订阅能打开,也能显示延迟,但是连不上网是啥原因?应如何解决,谢谢

更新订阅有问题

1、更新订阅完结果如下图:
更新订阅结束
2、更新完所有节点都没了,结果如下图:
结果没了

别名有误导

比如CT、CMCC,实测IP有乌克兰、菲律宾、英国、俄罗斯、美国等

请勿测速?

口头上的劝告远不及代码层面上来的有效,能不能做到在脚本内检测用户是否测速 即在段时间内连接多个节点并消耗大量流量,如果有则立刻封禁用户一个小时 阻止用户的所有连接。

最新更新的代码默认订阅链接失效

今天最新更新的代码的订阅链接产生的订阅信息变得很长,每次刷新后订阅信息都不一样了。
passwall订阅后只产生一条节点。订阅日志显示:暂时不支持https类型的节点订阅,跳过此节点。

我问一下 我批量测延迟的时候,日志一直在报,这两个报错是为什么?

2024/04/16 18:35:54 [Error] transport/internet/websocket: failed to dial to [2606:4700:3036:0:8c63:aef5:432a:719d]:443 > dial tcp [2606:4700:3036:0:8c63:aef5:432a:719d]:443: connectex: A socket operation was attempted to an unreachable network.

2024/04/16 18:35:55 [Warning] [2411228277] app/proxyman/outbound: failed to process outbound traffic > proxy/vless/outbound: failed to find an available destination > common/retry: [transport/internet/websocket: failed to dial WebSocket > transport/internet/websocket: failed to dial to (wss://[2606:4700:3036:76:8739:56b1:feec:be74]/proxyIP=proxyip.oracle.fxxk.dedyn.io): > dial tcp

Gemini1.5对代码解释

代码分析:用于 VLESS 隧道的 Cloudflare Worker
这段 JavaScript 代码实现了一个 Cloudflare Worker,它提供 VLESS 隧道服务。以下是其功能的细分:

  1. 配置:
    **用户 ID:**标识用户的 UUID。
    **代理 IP:**CF 代理的可选 IP 地址。
    **订阅服务:**提供 VLESS 配置的订阅服务的可选 URL。
    **Subconverter:**Clash 订阅转换器的可选 URL。
    **Subconfig:**订阅配置文件的可选 URL。
    **SOCKS5 地址:**SOCKS5 代理的可选地址。
    **RproxyIP:**一个布尔值,指示是否使用随机代理 IP。
  2. 功能:
    处理 HTTP 请求:
    如果请求不是 WebSocket 升级请求,则根据 URL 路径提供不同的响应:
    /:返回请求的 CF 属性。
    /{userID}:生成并返回指定用户的 VLESS 配置。
    任何其他路径:返回 404 Not Found 响应。
    如果请求是WebSocket 升级请求,它通过 WebSocket 建立 VLESS 隧道:
  • 从 VLESS 标头中提取目标地址和端口。
  • 直接或通过代理建立与目标服务器的连接。
  • 在客户端和目标服务器之间转发数据。
  • 通过连接到硬编码的 DNS 服务器来处理 UDP 上的 DNS 查询。
  1. 关键函数:
    **vlessOverWSHandler:**处理 WebSocket 升级请求并管理 VLESS 隧道。
    **processVlessHeader:**从 VLESS 标头中提取信息。
    **handleTCPOutBound:**处理到目标服务器的出站 TCP 连接。
    **handleDNSQuery:**处理 UDP 上的 DNS 查询。
    **socks5Connect:**通过 SOCKS5 代理建立连接。
    **getVLESSConfig:**直接或通过从订阅服务获取为用户生成 VLESS 配置。
  2. 附加功能:
    支持从订阅服务获取 VLESS 配置。
    支持转换 Clash 订阅。
    使用订阅服务时生成虚假用户 ID 和主机名以保护隐私。
    提供使用代理和随机化代理 IP 的选项。
  3. 注意:
    代码包含解释其功能的注释和文档。
    一些函数标记为 @ts-ignore 以抑制 TypeScript 错误。
    代码使用 Cloudflare Workers 特定的 API,例如 WebSocketPair 和 connect。
    这段代码展示了使用 Cloudflare Workers 全面实现 VLESS 隧道服务。它提供了各种配置选项和功能,以增强隐私和功能。
  4. 架构概述
    该服务利用 Cloudflare Workers 作为中间层,在客户端和目标服务器之间建立 VLESS 隧道。Worker 充当代理,处理来自客户端的 WebSocket 连接,并将数据转发到目标服务器。
  5. 核心功能
    WebSocket 连接处理: Worker 接受来自客户端的 WebSocket 连接,并使用 WebSocketPair API 创建一对 WebSocket 对象,分别用于与客户端和目标服务器通信。
    VLESS 标头解析: Worker 解析来自客户端的 VLESS 标头,以提取目标地址、端口、用户 ID 等信息。
    连接建立: Worker 使用 connect API 建立与目标服务器的连接。可以选择使用代理或 SOCKS5 代理。
    数据转发: Worker 在客户端和目标服务器之间转发数据。它使用流 API 来处理数据流,并确保数据被正确转发。
    DNS 查询处理: 对于 UDP 上的 DNS 查询,Worker 连接到一个硬编码的 DNS 服务器,并将查询结果返回给客户端。
  6. 附加功能
    订阅服务集成: 该服务支持从订阅服务获取 VLESS 配置。Worker 可以从订阅服务获取配置,并根据用户 ID 动态生成 VLESS 配置。
    Clash 订阅转换: 该服务支持将 Clash 订阅转换为 VLESS 配置。Worker 可以使用 subconverter 参数指定的 URL 来访问 Clash 订阅转换器。
    隐私保护: 当使用订阅服务时,Worker 会生成虚假用户 ID 和主机名,以增强隐私保护。
    代理支持: 该服务支持使用代理或 SOCKS5 代理来连接目标服务器。用户可以通过 proxyIP 和 SOCKS5 参数配置代理设置。
  7. 代码结构
    代码被组织成多个函数,每个函数负责特定的任务。例如,vlessOverWSHandler 函数处理 WebSocket 连接,processVlessHeader 函数解析 VLESS 标头,handleTCPOutBound 函数处理出站 TCP 连接,等等。
  8. 部署和使用
    要部署此服务,您需要将代码上传到 Cloudflare Workers 并配置必要的参数。然后,您可以使用生成的 URL 来访问 VLESS 隧道服务。
    总而言之,这个 Cloudflare Worker 提供了一个功能齐全的 VLESS 隧道服务,具有多种配置选项和功能。它可以帮助用户建立安全、私密的隧道连接,并绕过网络限制。
    希望这些额外的细节能帮助您更好地理解该服务的实现。

403 Forbidden cloudflare

自定义域名后的Base64订阅地址、clash订阅地址、singbox订阅地址都是
403 Forbidden
cloudflare

Merge Configs

I set a PROXYIP in environment variables.

Case 1:
No addresses in environment variables ===> around 55 configs.

Case 2:
When I set
ADD = IP1.IP1.IP1.IP1 , IP2.IP2.IP2.IP2 in environment variables ===> 2 configs.

How can I merge Case 1+Case 2 ?
Regards,
Mo3M

通过判断User Agent是否包含Mozilla来判断是否为浏览器访问不准确

edgetunnel/_worker.js

Lines 878 to 881 in 6148293

} else if (sub && userAgent.includes('mozilla') && !userAgent.includes('linux x86')) {
const vlessMain = `vless://${userID}@${hostName}:443?encryption=none&security=tls&sni=${hostName}&fp=randomized&type=ws&host=${hostName}&path=%2F%3Fed%3D2048#${hostName}`;
return `

Shadowrocket小火箭的订阅ua为

Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Mobile/15E148 Safari/604.1

与相同iOS版本的Safari浏览器相同,因而小火箭无法获取到订阅内容。

建议订阅内容页面与信息展示页面分开,直接通过url.pathname判断是需要信息展示页面还是订阅内容。
需修改内容如下:

edgetunnel/_worker.js

Lines 65 to 95 in 6148293

switch (url.pathname) {
case '/':
return new Response(JSON.stringify(request.cf), { status: 200 });
case `/${userID}`: {
const vlessConfig = await getVLESSConfig(userID, request.headers.get('Host'), sub, userAgent, RproxyIP);
const now = Date.now();
const timestamp = Math.floor(now / 1000);
const today = new Date(now);
today.setHours(0, 0, 0, 0);
if (userAgent && userAgent.includes('mozilla')){
return new Response(`${vlessConfig}`, {
status: 200,
headers: {
"Content-Type": "text/plain;charset=utf-8",
}
});
} else {
return new Response(`${vlessConfig}`, {
status: 200,
headers: {
"Content-Disposition": "attachment; filename=edgetunnel; filename*=utf-8''edgetunnel",
"Content-Type": "text/plain;charset=utf-8",
"Profile-Update-Interval": "6",
"Subscription-Userinfo": `upload=0; download=${Math.floor(((now - today.getTime())/86400000) * 24 * 1099511627776)}; total=${24 * 1099511627776}; expire=${timestamp}`,
}
});
}
}
default:
return new Response('Not found', { status: 404 });
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.