搭建 Pixiv 反向代理

Gloxina 发布于 2 天前 12 次阅读


Pixiv 的图床(i.pximg.net or imgaz.pixiv.net)在直接访问时会出现 403 Forbidden 错误(即防盗链),可以通过搭建 Pixiv 图床的反向代理来解决这个问题。有两种方案可供选择,分别是本地 Web 服务器(Nginx / Apache 等)进行反向代理以及 Cloudflare Workers。不过由于免费帐户的 Cloudflare Workers 有每天 100,000 次的请求上限,可能存在不够的情况,所以建议使用可以访问 Pixiv 图床的服务器进行反向代理。当然,如果使用 Cloudflare Workers 搭建后只给一两个人使用是没有任何问题的。

Web 服务器反向代理

首先,需要一台能访问到 Pixiv 图床的服务器,此处不过多赘述。下面为 Nginx 的最简单的配置示例,可以根据需要进行修改。

server {

    # 监听地址&域名
    listen 443 ssl http2;
    server_name your.domain.com;

    # SSL 证书配置
    ssl_certificate /path/to/ssl_certificate.crt;
    ssl_certificate_key /path/to/ssl_certificate.key;

    access_log off;

    location / {
    proxy_cache pximg;
    proxy_pass https://i.pximg.net;
    proxy_set_header Host i.pximg.net;
    proxy_set_header Referer "https://www.pixiv.net/";
 }
}

上面的片段适用于 Nginx Web 服务器,有关 Nginx 配置的更多信息,请查阅 nginx documentation

在服务器磁盘空间充足时,可以考虑启用缓存,此时示例配置为:

proxy_cache_path /path/to/cache levels=1:2 keys_zone=pximg:10m max_size=10g inactive=7d use_temp_path=off;

server {
    # 监听地址&域名
    listen 443 ssl http2;
    server_name your.domain.com;

    # SSL 证书配置
    ssl_certificate /path/to/ssl_certificate.crt;
    ssl_certificate_key /path/to/ssl_certificate.key;

    access_log off;

    location / {
    proxy_cache pximg;
    proxy_pass https://i.pximg.net;
    proxy_cache_revalidate on;
    proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
    proxy_cache_lock on;
    add_header X-Cache-Status $upstream_cache_status;
    proxy_set_header Host i.pximg.net;
    proxy_set_header Referer "https://www.pixiv.net/";

    proxy_cache_valid 200 7d;
    proxy_cache_valid 404 5m;
 }
}

Nginx 的配置较为繁琐,如果你也这么觉得,可以考虑使用 Cloudflare Workers。

Cloudflare Workers

在 Cloudflare Workers 页面选择“创建”,“创建 Workers”,然后命名你的 Workers,输入名称后点击“部署”。在显示“部署完成”窗口后,选择右上角的“编辑代码”,在左侧的代码编辑器中输入以下内容:

addEventListener("fetch", event => {
  let url = new URL(event.request.url);
  url.hostname = "i.pximg.net";

  let request = new Request(url, event.request);
  event.respondWith(
    fetch(request, {
      headers: {
        'Referer': 'https://www.pixiv.net/',
        'User-Agent': 'Cloudflare Workers'
      }
    })
  );
});

完成部署后,你可以使用自定义域名或者 Cloudflare 提供的 Workers 域名来进行访问(可能会被一些不可抗力因素阻断),建议使用自定义域名。

第三方反向代理

如果你不想自己部署,也可以使用以下第三方的 Pixiv 反向代理服务:

  • i.pixiv.re
  • i.pixiv.nl
  • i.pixiv.cat

有关这三个反向代理域名(实际上指向了同一个服务),请参阅 Pixiv圖片代理

此站点提供的 Pixiv 反向代理:
api.gloxina.com/pixiv/

最后更新于 2024-12-20