Wikipedia全域恢复访问指南
发表于 ,已有 0 条评论,总计 3256 次阅读 | 点我进行简繁转换

Wikipedia全域恢复访问指南

发表于 | 已有 0 条评论,总计 3256 次阅读

在所有之前的

声明:本文仅为丰富知识的交流与学习途径,我不提供除 Wikipedia 以外的其他网站指导。
请勿在中国大陆公网上公开自己搭建的反代站点,你可能会有随时遭到审查的风险。如果您因为此种原因导致种种问题,我不负任何责任。

使用本文所描述的方法,你可以访问 Wikipedia 的所有站点、登录并编辑。那么,让我们开始吧。

Wikipedia-logo-v2@2x


Wikipedia 全域恢复访问指南

本文主要参考自 神代綺凜 - 真·反代P站恢复直接访问指南Mashiro - PIXIV网页版及客户端访问恢复指南,我只是站在了巨人的肩膀上才能手抵星辰。

准备工作

  1. 网络环境良好的主机或 VPS
  2. 可自由设置 DNS 解析记录的域名
  3. 与域名相符并支持通配符的 SSL 证书

在后文中,均以example.com作为示例来反代访问 Wikipedia。

注意:请勿在中国大陆公网上公开我搭建的演示站点,这是小众网站。因为众所周知的原因,我希望它能长久地存活下去,所以请不要将其公之于众。让需要的人自己去发现,我想这种方式更好一些。

需要使用的域及其 DNS 解析记录

你需要添加以下域的 DNS 解析记录:

example.com(可选)
*.example.com
*.m.example.com

开始配置工作

下文仅列出反代所需的关键配置,其他内容请根据自己的实际情况调整。

对于 Nginx 的编译、安装及相关配置方法,SSL 证书的相关配置方法,均可以参考本站的 Nginx 配置,对于 SSL 证书的申请方法,可以参考 Deepzz - acme.sh 自动更新 RSA、ECC 双证书实践

Nginx 服务器的配置

将以下内容灵活替换后作为 Nginx 的虚拟主机文件,这里使用example.com作为示例。
#--------------------------------------------------------
#-    _       __   ___   ____      WikiMirror-Public    -
#-   / \   _ _\ \ / (_) / ___|  ___ _ ____   _____ _ __ -
#-  / _ \ | '_ \ V /| | \___ \ / _ \ '__\ \ / / _ \ '__|-
#- / ___ \| | | | | | |  ___) |  __/ |   \ V /  __/ |   -
#-/_/   \_\_| |_|_| |_| |____/ \___|_|    \_/ \___|_|   -
#--------------------------------------------------------
#镜像站会将源站中发送的".wikipedia.org"字符串全部替换为".example.com",
#镜像站为了支持全部(将近三百个)语言分站与它们所包含的不计其数的页面与资源,不得不这么做。
#详见:https://zhwp.org/Topic:Veamsg4xywbgb6xa
#--------------------------------------------------------
server {
    listen       80;
    listen       [::]:80;
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  ~^(?<subdomain>[^.]+(\.m)?\.)?example\.com$;
    add_header   AnYi-Mirror-Site-public "Config modified at 2020-02-12";

    #阻止搜索引擎蜘蛛收录站点。
    if ($http_user_agent ~* "Bot|Spider|BingPreview|Feedfetcher-Google|ia_archiver|MBCrawler|Mediapartners-Google|MSNot-media|Teoma|Yahoo! Slurp|^$") {
        return 444;
    }

    location / {
        resolver             8.8.8.8 ipv6=on;
        proxy_pass           https://${subdomain}wikipedia.org;
        proxy_cookie_domain  wikipedia.org example.com;
        proxy_redirect       https://www.wikipedia.org/ https://www.example.com/;
        proxy_redirect       https://${subdomain}wikipedia.org/ https://${subdomain}example.com/;
        proxy_redirect       https://${subdomain}m.wikipedia.org/ https://${subdomain}m.example.com/;
        proxy_set_header     Accept-Encoding "";
        proxy_set_header     Host ${subdomain}wikipedia.org;
        proxy_set_header     Referer $http_referer;
        proxy_set_header     User-Agent $http_user_agent;
        proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header     X-Forwarded-Proto https;
        proxy_set_header     X-Real-IP $remote_addr;
        sub_filter           ".wikipedia.org" ".example.com";
        sub_filter_once      off;
        sub_filter_types     *;
    }
}

以上配置应用后,访问www.example.com即可看到 Wikipedia 主站首页。

使用 Cloudflare 等 CDN 服务隐藏真实 IP

使用 Cloudflare 等 CDN 服务可以隐藏真实 IP 并可以不用在意源服务器是否支持 HTTPS,但请注意,Cloudflare 是不支持泛域名下的 CDN 记录的,这意味着只能手动或使用 API 去添加所需站点的 DNS 解析记录(除主站外,维基百科有多达 298 个语言分站),想完全隐藏真实 IP,需要为每个语言分站添加“桌面版”与“移动版”的DNS解析记录。

如果使用 CDN 服务隐藏真实 IP,需将proxy_hide_header x-client-ip;添加至上述配置的 location 段中。

写在最后

授人以鱼不如授人以渔,但如果连鱼都没见过就要另当别论了。本文不是面向初次接触 Nginx 服务器的人而写的,如果照搬照抄,Nginx 服务器可是会丢你 Error 的(笑

我所做的只是一个抛砖引玉的工作,你可以利用这种方法,恢复访问 Wikibooks、Google Scholar 或是 Pixiv 等其他网站。


如果你恰巧阅读到了这篇指南,并有通过搜索引擎解决不了的问题,请使用邮件与我联系。

本文头图:ほぼゆかれいむ

Wikipedia全域恢复访问指南-二维码 本文二维码

评论已关闭