反代p站的教程抄袭并修改自神代綺凜大佬的[Pixiv] Nginx 真·反代P站一文。

简单且必要的准备工作

  • 准备一台没有被p站封锁的境外vps
  • 注册一个域名

域名解析部分

可以使用新域名,也可以使用二级域名,没有很大区别。这里用二级域名pixiv.imoe.men做演示。分别解析pixiv.imoe.men,pixiv.imoe.men,pximg.pixiv.imoe.men到vps上。

宝塔面板部分

添加网站

添加两个站点。

第一个域名的第一行填写pixiv.imoe.men,第二行填写*.pixiv.imoe.men,其他不变,保存。

第二个域名的第一行填写pximg.pixiv.imoe.men,第二行填写*.pximg.pixiv.imoe.men,其他不变,保存。

申请证书(如果套CF,略过此步)

由于需要申请证书的域名里有通配符,因此宝塔的一键申请无法使用。这里我们选择DNS验证-手动解析。按照提示框到dns解析服务商添加txt记录即可。

站点配置文件修改

pixiv.imoe.men站点配置文件修改内容:

server_name ~^([^.]+)\.pixiv.imoe\.men$;

 set $domain $1;
 resolver 8.8.8.8;
location ~ .*
{
        proxy_set_header Host $domain.pixiv.net;
         proxy_set_header Referer "https://www.pixiv.net";
        proxy_cookie_domain pixiv.net pixiv.imoe.men;
        proxy_pass https://$domain.pixiv.net;
         proxy_ssl_server_name on;
        proxy_set_header Accept-Encoding "";
 proxy_redirect https://accounts.pixiv.net/ https://accounts.pixiv.imoe.men/;

        sub_filter "i-cf.pximg.net" "i.pixiv.imoe.men";
        sub_filter "pixiv.net" "pixiv.imoe.men";
        sub_filter "pximg.net" "pximg.pixiv.imoe.men";
        sub_filter_once off;
        sub_filter_types *;
    }

请将代码块里的第一行修改为自己的域名后,替换原配置文件的server_name一行。将代码块第一行下的所有内容修改后复制到 “#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则”的上一行(这个位置不能弄错了,很重要,一般是第7行),如下图(红框为修改部分,绿框为增加部分)。

pximg.pixiv.imoe.men站点配置文件修改内容:

 server_name ~^([^.]+)\.pximg\.pixiv.imoe\.men$;

  set $domain $1;

    resolver 8.8.8.8;

    location ~ .*
    {
        proxy_set_header Host $domain.pximg.net;
        proxy_set_header Referer "https://www.pixiv.net";
        proxy_pass https://$domain.pximg.net;
        proxy_ssl_server_name on;
        proxy_set_header Accept-Encoding "";

        sub_filter "i-cf.pximg.net" "i.pixiv.imoe.men";
        sub_filter "pixiv.net" "pixiv.imoe.men";
        sub_filter "pximg.net" "pximg.pixiv.imoe.men";
        sub_filter_once off;
        sub_filter_types *;
    } 

请将代码块里的第一行修改为自己的域名后,替换原配置文件的server_name一行。将代码块第一行下的所有内容修改后复制到 “#SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则”的上一行,如下图。

额外可选配置

防止搜索引擎收录

在 Nginx 配置中向每个 server 添加此句

    if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|^$") {  
        return 403;
    }

注意:请在set $domain $1;这一句后添加

禁止大陆外ip访问

详见教程原文

不过如果想一劳永逸,还是套cloudflare吧。这里给出常用的一部分p站子域名:

 
其实应该还有,可惜我找不到懒得找

局限性

 

  • 不能使用绑定的社交账号的登录方式
  • 帐号可能会出现需要 reCAPTCHA 验证导致无法登录,无解,只能自己将原站已登录的 cookie 导出,替换域名,然后导入反代站来进行登录
  • 可能存在尚未发现的问题

结语

请勿将搭建的反代站公布于众,另外,可以将第一个站点两个域名中的主域名删除(如下图)。这个域名可以在dns解析上处设置跳转到https://www.你的域名。当然,你也可以把这个域名用做说明介绍或者伪装。

访问https://www.你的域名 Enjoy it!


楼头曲宴仙人语,帐底吹笙香雾浓