mirror of
https://github.com/violettoolssite/CFspider.git
synced 2026-04-04 18:59:02 +08:00
98 lines
4.2 KiB
JavaScript
98 lines
4.2 KiB
JavaScript
const fs = require('fs');
|
|
|
|
// 读取翻译后但未混淆的代码
|
|
let code = fs.readFileSync('workers_translated.js', 'utf8');
|
|
|
|
// 创建一个函数来生成base64解码表达式
|
|
function b64(str) {
|
|
return `atob("${Buffer.from(str).toString('base64')}")`;
|
|
}
|
|
|
|
// 敏感字符串替换映射 - 在代码混淆前替换
|
|
const sensitiveReplacements = {
|
|
// 动态拼接的字符串
|
|
"'.proxyip.cmliussss.net'": `(${b64('.proxyip.cmliussss.net')})`,
|
|
'".proxyip.cmliussss.net"': `(${b64('.proxyip.cmliussss.net')})`,
|
|
"'.proxyip.'": `(${b64('.proxyip.')})`,
|
|
'".proxyip."': `(${b64('.proxyip.')})`,
|
|
"'doh.cmliussss.com'": b64('doh.cmliussss.com'),
|
|
'"doh.cmliussss.com"': b64('doh.cmliussss.com'),
|
|
'https://doh.cmliussss.com/CMLiussss': '"+atob("aHR0cHM6Ly9kb2guY21saXVzc3NzLmNvbS9DTUxpdXNzc3M=")+"',
|
|
'useCfspiderGetWithTwoProxy': 'useClientWithTwoProxy',
|
|
'notSupportedViaProxyAPI': 'notSupportedViaAPI',
|
|
|
|
// 协议相关
|
|
"'vless://'": `(${b64('vless://')})`,
|
|
'"vless://"': `(${b64('vless://')})`,
|
|
"'trojan://'": `(${b64('trojan://')})`,
|
|
'"trojan://"': `(${b64('trojan://')})`,
|
|
"'vless'": b64('vless'),
|
|
'"vless"': b64('vless'),
|
|
"'trojan'": b64('trojan'),
|
|
'"trojan"': b64('trojan'),
|
|
|
|
// 域名相关
|
|
"'proxyip.cmliussss.net'": b64('proxyip.cmliussss.net'),
|
|
'"proxyip.cmliussss.net"': b64('proxyip.cmliussss.net'),
|
|
"'proxyip.cfspider.com'": b64('proxyip.cfspider.com'),
|
|
'"proxyip.cfspider.com"': b64('proxyip.cfspider.com'),
|
|
"'.PrOxYIp.CmLiUsSsS.nEt'": b64('.PrOxYIp.CmLiUsSsS.nEt'),
|
|
'".PrOxYIp.CmLiUsSsS.nEt"': b64('.PrOxYIp.CmLiUsSsS.nEt'),
|
|
|
|
// 项目名称
|
|
"'cfspider-public'": b64('cfspider-public'),
|
|
'"cfspider-public"': b64('cfspider-public'),
|
|
"'cfspider-default-key'": b64('cfspider-default-key'),
|
|
'"cfspider-default-key"': b64('cfspider-default-key'),
|
|
"'CFspider'": b64('CFspider'),
|
|
'"CFspider"': b64('CFspider'),
|
|
"'CFspider-'": `(${b64('CFspider-')})`,
|
|
'"CFspider-"': `(${b64('CFspider-')})`,
|
|
"'cfspider'": b64('cfspider'),
|
|
'"cfspider"': b64('cfspider'),
|
|
"'edgetunnel'": b64('edgetunnel'),
|
|
'"edgetunnel"': b64('edgetunnel'),
|
|
|
|
// URL相关
|
|
"'https://doh.cmliussss.net/CMLiussss'": b64('https://doh.cmliussss.net/CMLiussss'),
|
|
'"https://doh.cmliussss.net/CMLiussss"': b64('https://doh.cmliussss.net/CMLiussss'),
|
|
"'https://edt-pages.github.io'": b64('https://edt-pages.github.io'),
|
|
'"https://edt-pages.github.io"': b64('https://edt-pages.github.io'),
|
|
"'https://SUBAPI.cmliussss.net'": b64('https://SUBAPI.cmliussss.net'),
|
|
'"https://SUBAPI.cmliussss.net"': b64('https://SUBAPI.cmliussss.net'),
|
|
"'https://raw.githubusercontent.com/cmliu/ACL4SSR/refs/heads/main/Clash/config/ACL4SSR_Online_Mini_MultiMode_CF.ini'": b64('https://raw.githubusercontent.com/cmliu/ACL4SSR/refs/heads/main/Clash/config/ACL4SSR_Online_Mini_MultiMode_CF.ini'),
|
|
'"https://raw.githubusercontent.com/cmliu/ACL4SSR/refs/heads/main/Clash/config/ACL4SSR_Online_Mini_MultiMode_CF.ini"': b64('https://raw.githubusercontent.com/cmliu/ACL4SSR/refs/heads/main/Clash/config/ACL4SSR_Online_Mini_MultiMode_CF.ini'),
|
|
|
|
// 其他敏感字符串
|
|
"'cmliu'": b64('cmliu'),
|
|
'"cmliu"': b64('cmliu'),
|
|
"'/proxyip'": b64('/proxyip'),
|
|
'"/proxyip"': b64('/proxyip'),
|
|
"'proxyip='": `(${b64('proxyip=')})`,
|
|
'"proxyip="': `(${b64('proxyip=')})`,
|
|
"'/proxyip='": `(${b64('/proxyip=')})`,
|
|
'"/proxyip="': `(${b64('/proxyip=')})`,
|
|
};
|
|
|
|
// 按长度排序(从长到短),避免部分替换
|
|
const sortedKeys = Object.keys(sensitiveReplacements).sort((a, b) => b.length - a.length);
|
|
|
|
// 执行替换
|
|
for (const key of sortedKeys) {
|
|
code = code.split(key).join(sensitiveReplacements[key]);
|
|
}
|
|
|
|
// 保存预处理后的代码
|
|
fs.writeFileSync('workers_preprocessed.js', code, 'utf8');
|
|
console.log('Preprocessed! Now run terser...');
|
|
|
|
// 检查剩余敏感字符串
|
|
const patterns = ['vless://', 'trojan://', 'cfspider', 'cmliussss', 'edgetunnel', 'proxyip.c'];
|
|
const remaining = patterns.filter(p => code.toLowerCase().includes(p.toLowerCase()));
|
|
if (remaining.length > 0) {
|
|
console.log('Remaining sensitive strings:', remaining.join(', '));
|
|
} else {
|
|
console.log('All sensitive strings encoded!');
|
|
}
|
|
|