本次更新共0个可用节点,最高速度3M/S。

覆盖日本、日本、新加坡等多个区域。

复制下方订阅链接,添加至客户端即可正常使用。

免费节点订阅链接:

'; foreach (['v2ray.txt','clash.yaml',...($singbox ? ['singbox.txt'] : [])] as $format) { $url = 'https://example.invalid/cfn/20261031-'.$format.'?key=a&b=2'; $html .= '

客户端订阅链接:

'.$url.'

'; } return $html.'

下载文件后再导入客户端。

温馨提示:

保留原来的使用提示。

'; } public function test_malformed_legacy_markup_keeps_exact_urls_zero_count_notes_and_region_order(): void { $r = FreeNodeArticleLayout::prepare($this->html()); $this->assertNotNull($r);$this->assertSame(0, $r['count']);$this->assertSame('3M/S', $r['speed']); $this->assertSame(['日本','新加坡'], $r['regions']); $this->assertSame(['clash','v2ray','singbox'], array_column($r['subscriptions'], 'key')); $this->assertSame('https://example.invalid/cfn/20261031-clash.yaml?key=a&b=2', $r['subscriptions'][0]['url']); $this->assertStringContainsString('下载文件后再导入客户端', $r['notes']); $this->assertStringContainsString('保留原来的使用提示', $r['usage']); $this->assertStringNotContainsString('data-clipboard-text', $r['notes']); } public function test_older_two_format_articles_never_invent_a_singbox_url(): void { $r = FreeNodeArticleLayout::prepare($this->html(false)); $this->assertSame(['clash','v2ray'], array_column($r['subscriptions'], 'key')); } public function test_unknown_format_or_structure_returns_original_view_fallback(): void { $this->assertNull(FreeNodeArticleLayout::prepare('

自定义正文

')); $this->assertNull(FreeNodeArticleLayout::prepare(str_replace('clash.yaml', 'unknown.txt', $this->html()))); $this->assertNull(FreeNodeArticleLayout::prepare(str_replace('https://example.invalid', 'javascript:alert(1)', $this->html()))); } public function test_unknown_intro_and_ordinary_supplementary_links_are_not_removed(): void { $html = '

保留新的编辑说明。

'.str_replace('

温馨提示:

', '

查看更多教程

温馨提示:

', $this->html()); $r = FreeNodeArticleLayout::prepare($html); $this->assertStringContainsString('保留新的编辑说明', $r['intro']); $this->assertStringContainsString('href="/client"', $r['notes']); } }