写着玩的 逻辑参考 https://github.com/Diniboy1123/usque
可以一键获得 Cloudflare MASQUE 节点
mihomo 格式的
H2/H3 IPv4/IPv6
verifyPeerCertByName, URI 上叫 vcn$server['name-cert-verify'] = 'b.com'
certificate_public_key_sha256)
https://raw.githubusercontent.com/xream/scripts/main/surge/modules/sub-store-scripts/upload/webdav-sub.js#age-public-key=xxx&age-secret-key=xxx&base-url=https%3A%2F%2Fdav.jianguoyun.com%2Fdav&file=sub-store.yaml&folder=sub-store&password=xxx&target=mihomo&username=x%40x.comhttps://raw.githubusercontent.com/xream/scripts/main/surge/modules/sub-store-scripts/upload/webdav-file.js#age-public-key=xxx&age-secret-key=xxx&base-url=https%3A%2F%2Fdav.jianguoyun.com%2Fdav&file=sub-store.txt&folder=sub-store&password=xxx&username=x%40x.com
因为proxyip是反代了443端口的, 所以访问cf的话只能访问https
除非这个proxyip的80端口还反代了cf的80端口
https://{你的后端域名}/worker-route/{本worker绑定的路由}?name=服务器名&total=1099511627776&reset_day=1total 为总流量resetDay : 每月流量重置日startDate : 订阅开始日期cycleDays : 订阅重置周期(单位: 天)
function operator(proxies, targetPlatform, context) {
const SUBS_KEY = 'subs'
const $ = $substore
const { source } = context
if (source._collection) throw new Error('不支持组合订阅, 请在单条订阅中使用此脚本')
// 这个可以自己改一下, 目的是从 proxies 取一个有效的节点出来
// 这里示范的是取一个节点包含 🇭🇰 的节点
const proxy = proxies.find(p => p.name.includes('🇭🇰'))
const subs = $.read(SUBS_KEY).map(sub => {
if(sub.name === proxy._subName) {
sub.proxy = ProxyUtils.produce([proxy], 'Surge')
console.log(`订阅 ${proxy._subDisplayName || proxy._subName} 写入代理/策略 ${sub.proxy}. 刷新后可见`)
}
return sub
})
$.write(subs, SUBS_KEY)
return proxies
}include_unsupported_proxysc-min-posts-interval-ms承接频道日推/群日推广告
有需要的老板可以私聊联系
"国家地区 Emoji" "ISO 3166-1 alpha-2" ["协议类型"] "分组内的序号"\n\n 去除无效节点 并 合理排序🇺🇸 US [VLESS] 01 要看模型和提示词
function operator(proxies, target, context) {
if ($options?._req) {
const { headers, url, path } = $options?._req || {};
// 获取 user-agent
const ua = headers?.["user-agent"] || headers?.["User-Agent"];
console.log(`User-Agent: ${ua}`);
let types = [];
if (target === "Surge") {
const isSurgeiOS = ua?.startsWith("Surge iOS/");
if (isSurgeiOS) {
// 获取 Surge 已解锁的功能
const features = (
headers?.["x-surge-unlocked-features"] ||
headers?.["X-Surge-Unlocked-Features"]
)?.split(/\s*,\s*/);
console.log(`Surge 已解锁的功能: ${features}`);
// 如果能取到 Surge 已解锁的功能 并且 里面没有 anytls, 就过滤掉 anytls
if (features && !features.includes("anytls")) {
types.push("anytls");
}
} else if (
ua?.startsWith("Surge Mac/") &&
ua?.match(/\/(\d+)/)?.[1] < 9860
) {
// 若 Surge Mac 版本小于 9860,就过滤掉 anytls
types.push("anytls");
}
} else if (target === "Egern") {
const build = ua?.match(/Build\/(\d+)/)?.[1];
console.log(`Egern Build: ${build}`);
// 更旧的版本里 user-agent 里没 build
// 判断旧版 就过滤掉 anytls
if (ua?.startsWith("egern/") && (!build || build < 718)) {
types.push("anytls");
}
}
return proxies.filter((proxy) => !types.includes(proxy.type));
}
return proxies;
}