V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ztm0929
V2EX  ›  问与答

如何镜像一个网站?(静态版)

  •  
  •   ztm0929 · 223 天前 via iPhone · 1171 次点击
    这是一个创建于 223 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为一些原因,我想将 A 社区(有账号系统,用户可编辑)静态地复制为 B 网站(其他都一样,就是没有了账号系统,但是主题等结构都还在,访问者只能查看已发布的帖子),请问技术上有什么实现思路?两个站点实际上存放在各自的物理服务器内,Nginx 反向代理应该无法实现吧?

    两个社区都是我个人搭建的,服务器、数据库都可以完全控制。

    6 条回复    2024-05-06 10:19:19 +08:00
    an0nym0u5u5er
        1
    an0nym0u5u5er  
       223 天前   ❤️ 1
    思路很多
    一、nginx 有个 sub_title 模块,可以实现类似 str_replace(A,B) 这样的功能,如果要替换的内容很少,可以用这个实现
    二、静态化,B 站直接返回 HTML ,优点是每个 URL 处理一次就好,适用于内容不怎么变化的
    三、自定义代理,比如你写一个 PHP 脚本作为中转程序,B 站的数据请求这个 PHP 接口,PHP 可以做中间的一些逻辑处理,比如屏蔽一些数据,后台管理页面,去除一些内容之类的,比第一个用 nginx 实现更容易,更灵活
    cruzzz
        2
    cruzzz  
       223 天前   ❤️ 1
    我不懂代码,但我之前做的事情和你说的类似。我有 A 站(图片反代站,信息丰富,)一枚,然后我想再搞个 B 站,用来做布局精简,顺便拿来测试一些 SEO 手段,看看能否导致 SEO 毁灭。 就去找 GPT 要了一些代码,它给我的代码就类似这样
    // 创建上下文
    $context = stream_context_create([
    'http' => [
    'follow_location' => false, // 禁止自动跟随重定向
    ],
    ]);

    // 获取 HTML 内容
    $htmlLines = file($url, false, $context);
    $html = implode("", $htmlLines);

    // 创建 DOMDocument 对象并加载 HTML 内容
    $dom = new DOMDocument();
    $dom->loadHTML($html);

    // 创建 DOMXPath 对象
    $xpath = new DOMXPath($dom);

    // 使用 XPath 查询表达式获取所有 article 元素
    $articles = $xpath->query('//article');

    // Initialize the result array
    $result = array();

    // 遍历每个 article 元素
    foreach ($articles as $article) {


    前提就是,网页地址和模板相对来说很好找规则,否则这个 dom 不容易定位。

    这样的效果就是:B 站重新搞个模板,布局换一换,数据全都是临时去 A 站请求的。
    然后……谷歌还收录了几万个,现在养了一段时间,bing+google 的日 IP 也上 1K 了= =
    yuzo555
        3
    yuzo555  
       223 天前   ❤️ 1
    都是你自己控制的那就写个脚本批量生成静态网页不就行了
    busterian
        4
    busterian  
       223 天前   ❤️ 1
    httrack
    wen20
        5
    wen20  
       222 天前
    域名解析就能实现
    flynaj
        6
    flynaj  
       219 天前 via Android
    直接同步数据库性能最好。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5541 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:10 · PVG 10:10 · LAX 18:10 · JFK 21:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.