这是一个迟到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地址也是可以正常访问的。
具体步骤如下
- 打开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
以下,看下速度有没有问题 - 把这些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;
}
- 重启Nginx服务
或者使用大佬提供的控制台脚本nginx -s reload
5.调试工具(这个功能全).bat
修复 403 Forbidden
有的大聪明(比如我)直接访问 https://i.pximg.net/img-original/img/...
,直接返回403 Forbidden
正常情况下, pixiv 的图片服务器域名为 i.pximg.net,因为有防盗链保护,只要请求标头Referer
是空值或不是來自pixiv的域名就会返回403。
使用nginx反向代理只需要將 www.pixiv.net
设置到 Referer
中就可以直接访问图片了
在浏览器中按F12
打开DevTools
,在网络一栏中查看请求标头。这里已经修改过Referer
了,所以请求成功。
下面是修改后的代码
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
推荐阅读
推荐工具
OysterQAQ 大佬的 代理站
Win10 可使用 tobiichiamane 大佬的 pixivfs-uwp
Android 和 iOS 上最好的客户端是 Notsfsssf 大佬的 pixez-flutter
赏图?
没啥库存,最近在看犬夜叉,放张犬大的图,请你吃糖