Merge pull request #830 from cmliu/beta2.0

Beta2.0
This commit is contained in:
CMLiussss
2025-11-19 00:09:16 +08:00
committed by GitHub
2 changed files with 28 additions and 9 deletions

View File

@@ -43,12 +43,16 @@
- 在左侧的 `设置`选项卡中,选择 `变量` > `添加变量`
变量名称填写**ADMIN**,值则为你的管理员密码,后点击 `保存`即可。
2. 给 Workers绑定 自定义域:
2. 绑定 KV 命名空间:
-`绑定`选项卡中选择 `添加绑定 +` > `KV 命名空间` > `添加绑定`,然后选择一个已有的命名空间或创建一个新的命名空间进行绑定。
- `变量名称`填写**KV**,然后点击 `添加绑定`即可。
3. 给 Workers绑定 自定义域:
- 在 workers控制台的 `触发器`选项卡,下方点击 `添加自定义域`
- 填入你已转入 CF 域名解析服务的次级域名,例如:`vless.google.com`后 点击`添加自定义域`,等待证书生效即可。
- **如果你是小白,你现在可以直接起飞,不用再往下看了!!!**
3. 访问后台:
4. 访问后台:
- 访问 `https://vless.google.com/admin` 输入管理员密码即可登录后台。
</details>
@@ -65,14 +69,18 @@
变量名称填写**ADMIN**,值则为你的管理员密码,后点击 `保存`即可。
- 返回 `部署` 选项卡,在右下角点击 `创建新部署` 后,重新上传 [main.zip](https://github.com/cmliu/edgetunnel/archive/refs/heads/main.zip) 文件后点击 `保存并部署` 即可。
2. 给 Pages绑定 CNAME自定义域[视频教程](https://www.youtube.com/watch?v=LeT4jQUh8ok&t=851s)
2. 绑定 KV 命名空间:
-`设置`选项卡中选择 `绑定` > `+ 添加` > `KV 命名空间`,然后选择一个已有的命名空间或创建一个新的命名空间进行绑定。
- `变量名称`填写**KV**,然后点击 `保存`后重试部署即可。
3. 给 Pages绑定 CNAME自定义域[视频教程](https://www.youtube.com/watch?v=LeT4jQUh8ok&t=851s)
- 在 Pages控制台的 `自定义域`选项卡,下方点击 `设置自定义域`
- 填入你的自定义次级域名,注意不要使用你的根域名,例如:
您分配到的域名是 `fuck.cloudns.biz`,则添加自定义域填入 `lizi.fuck.cloudns.biz`即可;
- 按照 CF 的要求将返回你的域名DNS服务商添加 该自定义域 `lizi`的 CNAME记录 `edgetunnel.pages.dev` 后,点击 `激活域`即可。
- **如果你是小白,那么你的 pages 绑定`自定义域`之后即可直接起飞,不用再往下看了!!!**
3. 访问后台:
4. 访问后台:
- 访问 `https://lizi.fuck.cloudns.biz/admin` 输入管理员密码即可登录后台。
</details>
@@ -88,14 +96,18 @@
-`设置构建和部署`页面下方,选择 `环境变量(高级)`后并 `添加变量`
变量名称填写**ADMIN**,值则为你的管理员密码,后点击 `保存并部署`即可。
2. 给 Pages绑定 CNAME自定义域[视频教程](https://www.youtube.com/watch?v=LeT4jQUh8ok&t=851s)
2. 绑定 KV 命名空间:
-`设置`选项卡中选择 `绑定` > `+ 添加` > `KV 命名空间`,然后选择一个已有的命名空间或创建一个新的命名空间进行绑定。
- `变量名称`填写**KV**,然后点击 `保存`后重试部署即可。
3. 给 Pages绑定 CNAME自定义域[视频教程](https://www.youtube.com/watch?v=LeT4jQUh8ok&t=851s)
- 在 Pages控制台的 `自定义域`选项卡,下方点击 `设置自定义域`
- 填入你的自定义次级域名,注意不要使用你的根域名,例如:
您分配到的域名是 `fuck.cloudns.biz`,则添加自定义域填入 `lizi.fuck.cloudns.biz`即可;
- 按照 CF 的要求将返回你的域名DNS服务商添加 该自定义域 `lizi`的 CNAME记录 `edgetunnel.pages.dev` 后,点击 `激活域`即可。
- **如果你是小白,那么你的 pages 绑定`自定义域`之后即可直接起飞,不用再往下看了!!!**
3. 访问后台:
4. 访问后台:
- 访问 `https://lizi.fuck.cloudns.biz/admin` 输入管理员密码即可登录后台。
</details>

View File

@@ -257,13 +257,13 @@ export default {
return null;
}
return `${协议类型}://${config_JSON.UUID}@${节点地址}:${节点端口}?security=tls&type=${config_JSON.传输协议}&host=${config_JSON.HOST}&sni=${config_JSON.HOST}&path=${encodeURIComponent(节点路径)}&fragment=${encodeURIComponent('1,40-60,30-50,tlshello')}&encryption=none${config_JSON.跳过证书验证 ? '&allowInsecure=1' : ''}#${encodeURIComponent(节点备注)}`;
return `${协议类型}://${config_JSON.UUID}@${节点地址}:${节点端口}?security=tls&type=${config_JSON.传输协议}&host=${config_JSON.HOST}&sni=${config_JSON.HOST}&path=${encodeURIComponent(随机路径() + 节点路径)}&fragment=${encodeURIComponent('1,40-60,30-50,tlshello')}&encryption=none${config_JSON.跳过证书验证 ? '&allowInsecure=1' : ''}#${encodeURIComponent(节点备注)}`;
}).filter(item => item !== null).join('\n');
订阅内容 = btoa(其他节点LINK + 订阅内容);
} else { // 优选订阅生成器
let 优选订阅生成器HOST = url.searchParams.get('sub') || config_JSON.优选订阅生成.SUB;
优选订阅生成器HOST = 优选订阅生成器HOST && !/^https?:\/\//i.test(优选订阅生成器HOST) ? `https://${优选订阅生成器HOST}` : 优选订阅生成器HOST;
const 优选订阅生成器URL = `${优选订阅生成器HOST}/sub?host=example.com&${协议类型 === ('v' + 'le' + 'ss') ? 'uuid' : 'pw'}=00000000-0000-4000-0000-000000000000&path=${encodeURIComponent(节点路径)}&type=${config_JSON.传输协议}`;
const 优选订阅生成器URL = `${优选订阅生成器HOST}/sub?host=example.com&${协议类型 === ('v' + 'le' + 'ss') ? 'uuid' : 'pw'}=00000000-0000-4000-0000-000000000000&path=${encodeURIComponent(随机路径() + 节点路径)}&type=${config_JSON.传输协议}`;
try {
const response = await fetch(优选订阅生成器URL, { headers: { 'User-Agent': 'v2rayN/edge' + 'tunnel (https://github.com/cmliu/edge' + 'tunnel)' } });
if (response.ok) 订阅内容 = btoa(其他节点LINK + atob(await response.text()));
@@ -813,6 +813,13 @@ async function MD5MD5(文本) {
return 第二次十六进制.toLowerCase();
}
function 随机路径() {
const 常用路径目录 = ["#","about","account","acg","act","activity","ad","admin","ads","ajax","album","albums","anime","api","app","apps","archive","archives","article","articles","ask","auth","avatar","bbs","bd","blog","blogs","book","books","bt","buy","cart","category","categories","cb","channel","channels","chat","china","city","class","classify","clip","clips","club","cn","code","collect","collection","comic","comics","community","company","config","contact","content","course","courses","cp","data","detail","details","dh","directory","discount","discuss","dl","dload","doc","docs","document","documents","doujin","download","downloads","drama","edu","en","ep","episode","episodes","event","events","f","faq","favorite","favourites","favs","feedback","file","files","film","films","forum","forums","friend","friends","game","games","gif","go","go.html","go.php","group","groups","help","home","hot","htm","html","image","images","img","index","info","intro","item","items","ja","jp","jump","jump.html","jump.php","jumping","knowledge","lang","lesson","lessons","lib","library","link","links","list","live","lives","login","logout","m","mag","magnet","mall","manhua","map","member","members","message","messages","mobile","movie","movies","music","my","new","news","note","novel","novels","online","order","out","out.html","out.php","outbound","p","page","pages","pay","payment","pdf","photo","photos","pic","pics","picture","pictures","play","player","playlist","post","posts","product","products","program","programs","project","qa","question","rank","ranking","read","readme","redirect","redirect.html","redirect.php","reg","register","res","resource","retrieve","sale","search","season","seasons","section","seller","series","service","services","setting","settings","share","shop","show","shows","site","soft","sort","source","special","star","stars","static","stock","store","stream","streaming","streams","student","study","tag","tags","task","teacher","team","tech","temp","test","thread","tool","tools","topic","topics","torrent","trade","travel","tv","txt","type","u","upload","uploads","url","urls","user","users","v","version","video","videos","view","vip","vod","watch","web","wenku","wiki","work","www","zh","zh-cn","zh-tw","zip"];
const 随机数 = Math.floor(Math.random() * 4 + 1);
const 随机路径 = 常用路径目录.sort(() => 0.5 - Math.random()).slice(0, 随机数).join('/');
return `/${随机路径}`;
}
async function 读取config_JSON(env, host, userID, 重置配置 = false) {
const 初始化开始时间 = performance.now();
const 默认配置JSON = {
@@ -883,7 +890,7 @@ async function 读取config_JSON(env, host, userID, 重置配置 = false) {
config_JSON.HOST = host;
config_JSON.UUID = userID;
config_JSON.PATH = config_JSON.反代.SOCKS5.启用 ? ('/' + config_JSON.反代.SOCKS5.启用 + (config_JSON.反代.SOCKS5.全局 ? '://' : '=') + config_JSON.反代.SOCKS5.账号) : (config_JSON.反代.PROXYIP === 'auto' ? '/' : `/proxyip=${config_JSON.反代.PROXYIP}`);
config_JSON.PATH = config_JSON.反代.SOCKS5.启用 ? ('/' + config_JSON.反代.SOCKS5.启用 + (config_JSON.反代.SOCKS5.全局 ? '://' : '=') + config_JSON.反代.SOCKS5.账号) : (config_JSON.反代.PROXYIP === 'auto' ? '' : `/proxyip=${config_JSON.反代.PROXYIP}`);
config_JSON.LINK = `${config_JSON.协议类型}://${userID}@${host}:443?security=tls&type=${config_JSON.传输协议}&host=${host}&sni=${host}&path=${encodeURIComponent(config_JSON.PATH)}&fragment=${encodeURIComponent('1,40-60,30-50,tlshello')}&encryption=none${config_JSON.跳过证书验证 ? '&allowInsecure=1' : ''}#${encodeURIComponent(config_JSON.优选订阅生成.SUBNAME)}`;
config_JSON.优选订阅生成.TOKEN = await MD5MD5(host + userID);