自动收集网上的聚合节点订阅
侧边栏壁纸
  • 累计撰写 87 篇文章
  • 累计收到 40 条评论

自动收集网上的聚合节点订阅

wszx01
2025-04-15 / 0 评论 / 11 阅读

自动收集网上的聚合节点订阅
新建一个txt文档,复制以下代码进去,修改文件名为:index.php
Token验证 iloveyou 可以修改为你自己的
打开网页:https://域名/test.php?token=iloveyou

<?php
// Token验证https://域名/test.php?token=iloveyou
if (!isset($_GET['token']) || $_GET['token'] !== 'iloveyou') {//因为作者是超绝恋爱脑
    header("Content-Type: text/plain");
    echo "你的TOKEN不对!";
    exit;
}

set_time_limit(0); // 禁用脚本执行时间限制

// 缓存配置
$cache_file = __DIR__ . '/cache.txt';
$cache_time = 14400; // 4小时缓存

// 返回缓存内容(如果有效)
if (file_exists($cache_file) && (time() - filemtime($cache_file) < $cache_time)) {
    header("Content-Type: text/plain");
    echo file_get_contents($cache_file);
    exit;
}

// 完整URL列表
$urls = [
    "https://raw.githubusercontent.com/aiboboxx/v2rayfree/main/v2",
    "https://raw.githubusercontent.com/shirkerboy/scp/main/sub",
    "https://jiang.netlify.app/",
    "https://fforever.github.io/v2rayfree/",
    "https://xlz767v2ray.pages.dev/sub/b9b8cf4c-29a3-4288-9c6c-8811dc37beec#BPB-Normal",
    "https://bpbv2ray.xlz767.ip-ddns.com/sub/b9b8cf4c-29a3-4288-9c6c-8811dc37beec#BPB-Normal",
    "https://www.xlz767.ip-ddns.com/proxy.php?url=https://edgetunnelworker.xlz.workers.dev/f47ac10b-58cc-4372-a567-0e02b2c3d479",
    "https://raw.githubusercontent.com/ripaojiedian/freenode/main/sub",
    "https://github.com/Huibq/TrojanLinks/raw/refs/heads/master/links/ss",
    "https://github.com/Huibq/TrojanLinks/raw/refs/heads/master/links/vmess",
    "https://github.com/Huibq/TrojanLinks/raw/refs/heads/master/links/trojan",
    "https://github.com/Huibq/TrojanLinks/raw/refs/heads/master/links/vless",
    "https://raw.githubusercontent.com/firefoxmmx2/v2rayshare_subcription/main/subscription/vray_sub.txt",
    "https://github.com/Roywaller/clash_subscription/raw/refs/heads/main/clash_subscription.txt",
    "https://q3dlaxpoaq.github.io/APIs/cg1.txt",
    "https://q3dlaxpoaq.github.io/APIs/cg3.txt",
    "https://q3dlaxpoaq.github.io/APIs/cg4.txt",
    "https://raw.githubusercontent.com/mahdibland/ShadowsocksAggregator/master/Eternity",
    "https://raw.githubusercontent.com/mahdibland/ShadowsocksAggregator/master/EternityAir",
    "https://raw.githubusercontent.com/snakem982/proxypool/main/source/v2ray.txt",
    "https://raw.githubusercontent.com/snakem982/proxypool/main/source/v2ray-2.txt"
];

// 存储唯一节点
$uniqueNodes = [];

// CURL全局配置
$curl_options = [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_TIMEOUT        => 5,
    CURLOPT_CONNECTTIMEOUT => 3,
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_MAXREDIRS      => 3,
    CURLOPT_USERAGENT      => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
];

// 分批次处理(每批5个URL)
$batchSize = 5;
foreach (array_chunk($urls, $batchSize) as $urlChunk) {
    $mh = curl_multi_init();
    $handles = [];
    
    // 初始化批处理请求
    foreach ($urlChunk as $url) {
        $ch = curl_init($url);
        curl_setopt_array($ch, $curl_options);
        curl_multi_add_handle($mh, $ch);
        $handles[] = $ch;
    }
    
    // 执行并行请求
    $active = null;
    do {
        $status = curl_multi_exec($mh, $active);
        if ($active && curl_multi_select($mh) === -1) {
            usleep(100);
        }
    } while ($active && $status == CURLM_OK);
    
    // 处理响应
    foreach ($handles as $ch) {
        $content = curl_multi_getcontent($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        
        if ($httpCode == 200 && !empty($content)) {
            $content = preg_replace('/\s+/', '', trim($content));
            if (preg_match('/^[a-zA-Z0-9+\/]+={0,2}$/', $content)) {
                $decoded = base64_decode($content, true);
                if ($decoded !== false) {
                    // 分割节点并去重
                    $nodes = array_filter(explode("\n", $decoded), function($line) {
                        return !empty(trim($line));
                    });
                    foreach ($nodes as $node) {
                        $cleanNode = trim($node);
                        $uniqueNodes[$cleanNode] = true; // 利用键名去重
                    }
                }
            }
        }
        
        // 清理句柄
        curl_multi_remove_handle($mh, $ch);
        curl_close($ch);
    }
    curl_multi_close($mh);
}

// 生成最终内容
$finalContent = implode("\n", array_keys($uniqueNodes));
$finalBase64 = !empty($finalContent) ? base64_encode($finalContent) : base64_encode('');

// 原子化写入缓存
$tempCache = tempnam(__DIR__, 'cache_temp');
if ($tempCache && file_put_contents($tempCache, $finalBase64)) {
    rename($tempCache, $cache_file);
}

// 输出结果
header("Content-Type: text/plain");
echo $finalBase64;
?>
0

评论 (0)

取消