Skip to content

Commit cc8fb1a

Browse files
authored
Merge pull request #830 from cmliu/beta2.0
Beta2.0
2 parents 0ad62ce + 1199103 commit cc8fb1a

2 files changed

Lines changed: 28 additions & 9 deletions

File tree

README.md

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,16 @@
4343
- 在左侧的 `设置`选项卡中,选择 `变量` > `添加变量`
4444
变量名称填写**ADMIN**,值则为你的管理员密码,后点击 `保存`即可。
4545

46-
2. 给 Workers绑定 自定义域:
46+
2. 绑定 KV 命名空间:
47+
-`绑定`选项卡中选择 `添加绑定 +` > `KV 命名空间` > `添加绑定`,然后选择一个已有的命名空间或创建一个新的命名空间进行绑定。
48+
- `变量名称`填写**KV**,然后点击 `添加绑定`即可。
49+
50+
3. 给 Workers绑定 自定义域:
4751
- 在 workers控制台的 `触发器`选项卡,下方点击 `添加自定义域`
4852
- 填入你已转入 CF 域名解析服务的次级域名,例如:`vless.google.com`后 点击`添加自定义域`,等待证书生效即可。
4953
- **如果你是小白,你现在可以直接起飞,不用再往下看了!!!**
5054

51-
3. 访问后台:
55+
4. 访问后台:
5256
- 访问 `https://vless.google.com/admin` 输入管理员密码即可登录后台。
5357

5458
</details>
@@ -65,14 +69,18 @@
6569
变量名称填写**ADMIN**,值则为你的管理员密码,后点击 `保存`即可。
6670
- 返回 `部署` 选项卡,在右下角点击 `创建新部署` 后,重新上传 [main.zip](https://github.com/cmliu/edgetunnel/archive/refs/heads/main.zip) 文件后点击 `保存并部署` 即可。
6771

68-
2. 给 Pages绑定 CNAME自定义域:[视频教程](https://www.youtube.com/watch?v=LeT4jQUh8ok&t=851s)
72+
2. 绑定 KV 命名空间:
73+
-`设置`选项卡中选择 `绑定` > `+ 添加` > `KV 命名空间`,然后选择一个已有的命名空间或创建一个新的命名空间进行绑定。
74+
- `变量名称`填写**KV**,然后点击 `保存`后重试部署即可。
75+
76+
3. 给 Pages绑定 CNAME自定义域:[视频教程](https://www.youtube.com/watch?v=LeT4jQUh8ok&t=851s)
6977
- 在 Pages控制台的 `自定义域`选项卡,下方点击 `设置自定义域`
7078
- 填入你的自定义次级域名,注意不要使用你的根域名,例如:
7179
您分配到的域名是 `fuck.cloudns.biz`,则添加自定义域填入 `lizi.fuck.cloudns.biz`即可;
7280
- 按照 CF 的要求将返回你的域名DNS服务商,添加 该自定义域 `lizi`的 CNAME记录 `edgetunnel.pages.dev` 后,点击 `激活域`即可。
7381
- **如果你是小白,那么你的 pages 绑定`自定义域`之后即可直接起飞,不用再往下看了!!!**
7482

75-
3. 访问后台:
83+
4. 访问后台:
7684
- 访问 `https://lizi.fuck.cloudns.biz/admin` 输入管理员密码即可登录后台。
7785

7886
</details>
@@ -88,14 +96,18 @@
8896
-`设置构建和部署`页面下方,选择 `环境变量(高级)`后并 `添加变量`
8997
变量名称填写**ADMIN**,值则为你的管理员密码,后点击 `保存并部署`即可。
9098

91-
2. 给 Pages绑定 CNAME自定义域:[视频教程](https://www.youtube.com/watch?v=LeT4jQUh8ok&t=851s)
99+
2. 绑定 KV 命名空间:
100+
-`设置`选项卡中选择 `绑定` > `+ 添加` > `KV 命名空间`,然后选择一个已有的命名空间或创建一个新的命名空间进行绑定。
101+
- `变量名称`填写**KV**,然后点击 `保存`后重试部署即可。
102+
103+
3. 给 Pages绑定 CNAME自定义域:[视频教程](https://www.youtube.com/watch?v=LeT4jQUh8ok&t=851s)
92104
- 在 Pages控制台的 `自定义域`选项卡,下方点击 `设置自定义域`
93105
- 填入你的自定义次级域名,注意不要使用你的根域名,例如:
94106
您分配到的域名是 `fuck.cloudns.biz`,则添加自定义域填入 `lizi.fuck.cloudns.biz`即可;
95107
- 按照 CF 的要求将返回你的域名DNS服务商,添加 该自定义域 `lizi`的 CNAME记录 `edgetunnel.pages.dev` 后,点击 `激活域`即可。
96108
- **如果你是小白,那么你的 pages 绑定`自定义域`之后即可直接起飞,不用再往下看了!!!**
97109

98-
3. 访问后台:
110+
4. 访问后台:
99111
- 访问 `https://lizi.fuck.cloudns.biz/admin` 输入管理员密码即可登录后台。
100112

101113
</details>

_worker.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,13 +257,13 @@ export default {
257257
return null;
258258
}
259259

260-
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(节点备注)}`;
260+
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(节点备注)}`;
261261
}).filter(item => item !== null).join('\n');
262262
订阅内容 = btoa(其他节点LINK + 订阅内容);
263263
} else { // 优选订阅生成器
264264
let 优选订阅生成器HOST = url.searchParams.get('sub') || config_JSON.优选订阅生成.SUB;
265265
优选订阅生成器HOST = 优选订阅生成器HOST && !/^https?:\/\//i.test(优选订阅生成器HOST) ? `https://${优选订阅生成器HOST}` : 优选订阅生成器HOST;
266-
const 优选订阅生成器URL = `${优选订阅生成器HOST}/sub?host=example.com&${协议类型 === ('v' + 'le' + 'ss') ? 'uuid' : 'pw'}=00000000-0000-4000-0000-000000000000&path=${encodeURIComponent(节点路径)}&type=${config_JSON.传输协议}`;
266+
const 优选订阅生成器URL = `${优选订阅生成器HOST}/sub?host=example.com&${协议类型 === ('v' + 'le' + 'ss') ? 'uuid' : 'pw'}=00000000-0000-4000-0000-000000000000&path=${encodeURIComponent(随机路径() + 节点路径)}&type=${config_JSON.传输协议}`;
267267
try {
268268
const response = await fetch(优选订阅生成器URL, { headers: { 'User-Agent': 'v2rayN/edge' + 'tunnel (https://github.com/cmliu/edge' + 'tunnel)' } });
269269
if (response.ok) 订阅内容 = btoa(其他节点LINK + atob(await response.text()));
@@ -813,6 +813,13 @@ async function MD5MD5(文本) {
813813
return 第二次十六进制.toLowerCase();
814814
}
815815

816+
function 随机路径() {
817+
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"];
818+
const 随机数 = Math.floor(Math.random() * 4 + 1);
819+
const 随机路径 = 常用路径目录.sort(() => 0.5 - Math.random()).slice(0, 随机数).join('/');
820+
return `/${随机路径}`;
821+
}
822+
816823
async function 读取config_JSON(env, host, userID, 重置配置 = false) {
817824
const 初始化开始时间 = performance.now();
818825
const 默认配置JSON = {
@@ -883,7 +890,7 @@ async function 读取config_JSON(env, host, userID, 重置配置 = false) {
883890

884891
config_JSON.HOST = host;
885892
config_JSON.UUID = userID;
886-
config_JSON.PATH = config_JSON.反代.SOCKS5.启用 ? ('/' + config_JSON.反代.SOCKS5.启用 + (config_JSON.反代.SOCKS5.全局 ? '://' : '=') + config_JSON.反代.SOCKS5.账号) : (config_JSON.反代.PROXYIP === 'auto' ? '/' : `/proxyip=${config_JSON.反代.PROXYIP}`);
893+
config_JSON.PATH = config_JSON.反代.SOCKS5.启用 ? ('/' + config_JSON.反代.SOCKS5.启用 + (config_JSON.反代.SOCKS5.全局 ? '://' : '=') + config_JSON.反代.SOCKS5.账号) : (config_JSON.反代.PROXYIP === 'auto' ? '' : `/proxyip=${config_JSON.反代.PROXYIP}`);
887894
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)}`;
888895
config_JSON.优选订阅生成.TOKEN = await MD5MD5(host + userID);
889896

0 commit comments

Comments
 (0)