如题,使用条件有以下几条:
- 使用V2board面板搭建的机场https://github.com/v2board/v2board(差不多就是目前市面上比较常见的机场,看一眼大致UI布局就能知道)
- 机场网站注册无需邮箱验证码
- 新用户有免费试用流量
Tips:
订阅 API 格式为 /api/v1/client/subscribe?token={token}
这个一般是V2board面板搭建的通常都是这种形式的
满足以上三条即可套用这个代码,实现无限薅新用户试用流量。可能看到这里你觉得条件苛刻,但是不妨换个角度,一旦搞成就是长久稳定的
说了那么多,接下说说使用方法
正文
使用方法:
1.先找到目标机场网站,获取其网站地址,形如:h t tps://your-airport-domain.com【baseUrl】
2.试注册一个新号,获取其新用户试用流量的订阅地址,注意看我Tips发的订阅API格式,形如:
h t tps://subscribe-domain.com/api/v1/client/subscribe?token={token}
此时我们要填的是订阅API地址前面的https://subscribe-domain.com【subscribeBase】
3.将以上两个信息,换入我下方给出的代码(我在代码中打了注释需要替换的位置在哪)
4.运用cloudflare即可在线部署(或者你有主机也可以实现,使用node.js就可以直接在服务器上运行)在 Cloudflare dashboard:Workers & Pages > Create application > Workers > Deploy a Worker > 选择 “Hello World”,删除编辑器中默认代码,粘贴以下代码,点击右上角就部署即可
默认的workers.dev是需要代理连接的才能实现流畅的使用,所以这个使用你可以自行选择绑定自定义域名,就可以实现无需代理连接,直接更新就可以了(现在cf托管的二级域名各位应该不少吧
)
5.最后可以把你的h t tps://XXX.workers.dev这个地址直接当成订阅地址,粘贴到你的V2rayN或者hiddify、shadowrocket、clash verge等都可以直接使用(或者是你绑定的自定义域名)
当你想要使用的使用点击一下更新就可以了,那么又是一个全新的流量
代码:
function generateEmail() {
const chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
const domains = ['gmail.com', '163.com', '126.com', 'qq.com', 'outlook.com', 'hotmail.com'];
const name = Array.from({ length: 10 }, () => chars[Math.floor(Math.random() * chars.length)]).join('');
const domain = domains[Math.floor(Math.random() * domains.length)];
return `${name}@${domain}`;
}
function generatePassword(length = 10) {
const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
return Array.from({ length }, () => chars[Math.floor(Math.random() * chars.length)]).join('');
}
export default {
async fetch(request, env) {
// 修改为目标机场的注册和订阅基地址
const baseUrl = "https://your-airport-domain.com"; // 注册 API 域名
const subscribeBase = "https://subscribe-domain.com"; // 订阅 API 域名
const apiBase = `${baseUrl}/api/v1`;
const userAgent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36';
const headersBase = {
'Content-Type': 'application/json',
'Origin': baseUrl,
'User-Agent': userAgent
};
const email = generateEmail();
const password = generatePassword();
try {
const registerData = JSON.stringify({ email, password });
const registerHeaders = { ...headersBase, 'Referer': `${baseUrl}/#/register` };
const registerResponse = await fetch(`${apiBase}/passport/auth/register`, {
method: 'POST',
headers: registerHeaders,
body: registerData
});
if (!registerResponse.ok) {
return new Response(`注册失败: ${await registerResponse.text()}`, { status: 500 });
}
const registerResult = await registerResponse.json();
const subToken = registerResult.data?.token || registerResult.data?.auth_data?.token;
if (!subToken) {
return new Response(`注册无 token: ${JSON.stringify(registerResult)}`, { status: 500 });
}
const finalUrl = `${subscribeBase}/api/v1/client/subscribe?token=${subToken}`;
const contentResponse = await fetch(finalUrl, {
method: 'GET',
headers: { 'User-Agent': userAgent }
});
if (!contentResponse.ok) {
return new Response(`获取订阅内容失败: ${await contentResponse.text()}`, { status: 500 });
}
const content = await contentResponse.text();
try {
const decodedContent = atob(content);
return new Response(decodedContent, {
headers: { 'Content-Type': 'text/plain; charset=utf-8' }
});
} catch {
return new Response(content, {
headers: { 'Content-Type': 'text/plain; charset=utf-8' }
});
}
} catch (e) {
return new Response(`整体错误: ${e.message}`, { status: 500 });
}
}
};
效果图
感谢您的来访,获取更多精彩文章请收藏本站。

暂无评论内容