抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

这是一个迟到5年的Pixiv-Nginx使用体验,时间一晃就过去了呢。 当下AI绘画盛行,不知道P站的画师们是否还在坚持着,还是已经转行了呢。不管怎么样,这个随笔还是要写的,毕竟我也是在用的嘛。

合法性声明

《国际联网暂行规定》第六条规定:“计算机信息网络直接进行国际联网,必须使用邮电部国家公用电信网提供的国际出入口信道。任何单位和个人不得自行建立或者使用其他信道进行国际联网。” Nginx本地代理使用的都是“公用电信网提供的国际出入口信道”,从国外Pixiv服务器到国内用户电脑上Nginx程序的流量,使用的是正常流量通道,其间未对流量进行任何额外加密(仅有网页原有的TLS加密,区别于VPN的流量加密),而Nginx获取到网页数据之后发生的整个代理过程完全在国内,不再适用国际互联网相关之规定。
我们今天讲的Nginx本地反代,是本地反向代理,并没有自行建立信道进行国际联网,并没有推倒墙娘,我们的流量依然是走国家公用电信网的,所以这种方式完全合法!

闲话

没想到这么久了呢,从那个9102年算起,已经5年过去了呢!当年我还是个小白的高中生,完全的物理物理竞赛生,专心准备拿奖去自主招生, 以后成为物理学家 (2020年高考的时候:什么是自主招生?取消了!!!!!jyb你厉害···)
当年在看さくら荘のペットな彼女时,随意的搜索了下Mashiro
然后?
就发现了同为真白的博主「樱花庄的白猫」
再然后?
随意点进了一篇技术博客PIXIV网页版及客户端访问恢复指南
后来?
就知道了Pixiv平台,和反向代理技术啦。可惜,后来备战高考,大学专业又选了自动化,这件事就算是被我忘记了。

重拾记忆

那么,最近正好整理电脑,发现了好久没“玩”过的Pixiv-Nginx,于是就想着重拾记忆,看看这个东西还能不能用了。

搭建本地反向代理

下载Pixiv-Nginx

Github代码仓库Pixiv-Nginx

按照教程配置

教程当然还是要看原作者的啦,PIXIV网页版及客户端访问恢复指南

i.pximg.net

登录P站后会发现,它的图片服务器地址是i.pximg.net,也是加载最慢的部分。
于是我研究了以下大佬提供的代理方案,打开配置文件/conf/pixiv.conf,发现新旧两版代码在代理server的设置上有不同,这里我就都截取出来了。

注意看proxy_pass部分:
新版的是 https://i.pixiv.re(镜像站)
旧版的是 https://i-pximg-net(原网站,但在upstream中重新指定了ip地址)

server {
    listen 443 ssl;
    server_name i.pximg.net;


    ssl_certificate ca/pixiv.net.crt;
    ssl_certificate_key ca/pixiv.net.key;

    location / {
        set $pximg_url i.pixiv.re;
        
        #rewrite ^/(.*)$ https://$pximg_url/$1 redirect;

        # proxy_pass https://i-pximg-net;
        # proxy_set_header Host $http_host;
        
        resolver 223.5.5.5;
        proxy_pass https://$pximg_url;
        proxy_set_header Host $pximg_url;
        proxy_ssl_server_name on;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header Accept-Encoding '';
        proxy_buffering off;
    }
}
server {
    listen 443 ssl;
    server_name i.pximg.net;

    
    ssl_certificate ca/pixiv.net.crt;
    ssl_certificate_key ca/pixiv.net.key;
    
    location / {
        proxy_pass https://i-pximg-net;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header Accept-Encoding ''; 
        proxy_buffering off;
    }
}
upstream i-pximg-net { 
    server 210.140.92.140:443;
    server 210.140.92.137:443;
    server 210.140.92.139:443;
    server 210.140.92.142:443;
    server 210.140.92.134:443;
    server 210.140.92.141:443;
    server 210.140.92.143:443;
    server 210.140.92.136:443; 
    server 210.140.92.138:443;
    server 210.140.92.144:443;
    server 210.140.92.145:443;
}

重新配置 i.pximg.net 代理

我这里还是使用旧版的,因为新版的镜像站加载速度也一般(镜像站直接访问得了,还反代干甚么),而且旧版的ip地址也是可以正常访问的。

具体步骤如下

  1. 打开ipaddress,搜索i.pximg.net,获取ip地址
    i  IN  A  210.140.139.129
    i  IN  A  210.140.139.130
    i  IN  A  210.140.139.131
    i  IN  A  210.140.139.132
    i  IN  A  210.140.139.133
    i  IN  A  210.140.139.134
    i  IN  A  210.140.139.135
    i  IN  A  210.140.139.136
    
    每个地址ping以下,看下速度有没有问题
  2. 把这些ip地址填入/conf/pixiv.conf中的upstream i-pximg-net中。
    格式为server ip:443;,注意最后的分号,不要忘记了。
    原有的ip地址也可以ping一下,看看速度有没有问题,如果有问题就删掉。
upstream i-pximg-net {
    server 210.140.139.134:443;
    server 210.140.139.129:443;
    server 210.140.139.130:443;
    server 210.140.139.131:443;
    server 210.140.139.132:443;
    server 210.140.139.133:443;
    server 210.140.139.134:443;
    server 210.140.139.135:443;
    server 210.140.139.136:443;
    # server 210.140.92.140:443;
    # server 210.140.92.137:443;
    # server 210.140.92.139:443;
    server 210.140.92.142:443;
    # server 210.140.92.134:443;
    server 210.140.92.141:443;
    server 210.140.92.143:443;
    # server 210.140.92.136:443;
    # server 210.140.92.138:443;
    server 210.140.92.144:443;
    server 210.140.92.145:443;
}
  1. 重启Nginx服务
    nginx -s reload
    
    或者使用大佬提供的控制台脚本5.调试工具(这个功能全).bat

修复 403 Forbidden

有的大聪明(比如我)直接访问 https://i.pximg.net/img-original/img/...,直接返回403 Forbidden

1698850166750

正常情况下, pixiv 的图片服务器域名为 i.pximg.net,因为有防盗链保护,只要请求标头Referer是空值或不是來自pixiv的域名就会返回403。

使用nginx反向代理只需要將 www.pixiv.net 设置到 Referer中就可以直接访问图片了

在浏览器中按F12打开DevTools,在网络一栏中查看请求标头。这里已经修改过Referer了,所以请求成功。
1698980929483

下面是修改后的代码

server {
    listen 443 ssl;
    server_name i.pximg.net;

    
    ssl_certificate ca/pixiv.net.crt;
    ssl_certificate_key ca/pixiv.net.key;
    
    location / {
        proxy_pass https://i-pximg-net;
        proxy_set_header Referer "https://www.pixiv.net/"; # 添加这一行
        ...
    }
}

排查错误

日志文件位于./logs/*.log

推荐阅读

PIXIV网页版及客户端访问恢复指南

Pixiv 直连工具

[Pixiv] Nginx 真·反代P站

推荐工具

OysterQAQ 大佬的 代理站

Win10 可使用 tobiichiamane 大佬的 pixivfs-uwp

Android 和 iOS 上最好的客户端是 Notsfsssf 大佬的 pixez-flutter

上P站?教你⑧种正确的直连“姿势”!

赏图?

没啥库存,最近在看犬夜叉,放张犬大的图,请你吃糖

IMG_1992(20231026-083919).JPG

鸣谢

感谢Pixiv上优秀的画师们辛勤绘制的画作!!!
感谢Pixiv入门指南者Mashiro
感谢诸多搭建镜像站的大佬们

评论