夜灭 admin
死宅拯救世界!
啥也不是 啥也不会 懒癌晚期 浙江靓仔 死宅 二刺螈
个人档
admin@acg.ma
admin@acg.ge
admin@acg.gdn
文章
69
微语
154
评论
599
Do you like me?
175
标签
qq机器人 小栗子 插件 机器人插件 机器人 编程 bug 写bug 礼物 网友 四四 女生 小姐姐 抽签 点歌 云点歌 外链 网站优化 网站提速 网站 优化 提速 cdn picgo jsDelivr github 安倍晋三 大肠炎癌变 日本 日本首相 时事新闻 辞职 学校 日常 学校日常 学园生活 学校生活 独白 自言自语 个人笔记 交换机 dhcp 网络设备 trunk 中继模式 vlan 夜灭poster null emlog 主题 null主题 开发 写机器人 框架 小栗子框架 白嫖 微云 腾讯云 腾讯 图片 tu 图片外链 免费 魔女之旅 12.13 灰之魔女伊蕾娜 灰之魔女 伊蕾娜 追番补番 追番 补番 推荐 推荐番剧 番剧 动漫 小说d 小说动画化 小说改动漫 小说 epub 南京大屠杀 大屠杀 缅怀 代码 html css 层叠样式表 全站变灰色 变灰 蒙版 纪念 备案 腾讯云网站备案 网站备案 php 编程 小栗子插件 夜灭 网站综合插件 综合插件 seo 服务器 轻量级 轻量级应用服务器 轻量应用服务器 腾讯云 腾讯云轻量应用服务器 优惠活动 优惠 活动 特价 服务器特惠活动 学生机 浏览器插件 浏览器 百度 百度药丸 去广告 教程 百度去广告 js layui login type 后台登陆 页面美化 JavaScript 网盘直链下载助手 跳过验证 Tampermonkey 油猴脚本 油猴 脚本 百度系 百度云盘 百度网盘 百度云 nullpro 主题演示 演示 阿里云盘 网盘 阿里 点歌机器人 点歌姬 音乐 原创 Hello.World 伊藤智彦导演 你好世界 日本电影 ai 爱情 影视 伊藤智彦 杂交水稻之父 中国科学院院士 袁隆平逝世 袁隆平 逝世 夏德昭 杨伯达 吴孟超 原神 动画 MMD·3D 胡桃 Genshin Impact HuTao 烟绯 Yanfei 旅行 笔记本 琐事 毕业 高职考 电脑 象山 东极岛 浙江邮电 电职 旅游 科一 驾校 考试 科一考试 4k 雷电将军 雷军 雷神 sql 数据库 mysql PMySQLi Database Class DatabaseClass dbclass 夜灭数据管理平台 数据管理平台 数据 管理 平台 妄想税 want tax ctf 注入 sql注入 攻防 网站攻防 web curl windows linux 文件传输工具 工具 命令详解 网络技术 新年快乐 新年 祈愿 nas 组装\\机箱 组装 机箱 主板 电源 小电源 内存 内存条 群晖 黑群晖 白群晖 cpu 1150 主机 nas主机 918+引导 DiskGenius IMG写盘工具 芯片无忧 洗白 洗白群晖 群晖不认盘 dsm 引导 购买建议 消费 52.si 短位纯数字米 面基 联萌云 云盘 alist 迅雷 迅雷云盘 迅雷快鸟 夸克 夸克云盘 aliyuno 123盘 123pan loli.tax 在线聊天室 毛主席 毛泽东 历史 铭记历史 以史为鉴 资本主义 毛泽东选集.第六卷 毛泽东选集 windows10 windows11 arm LTSC LTSB consumer editions business editions 夸克网盘 迅雷网盘 xia\'zai\'zha 下载站 下载 oss obs cos 对象存储 上行流量 下行流量 解析 网盘解析 域名 suki.cc moei.cc 西部 西部数码 捡漏 加速 腾讯云cdn gh npm png jpg 静态加速 静态文件加速 文件加速 后台登录 十年之约 for forever 10年 博客 随机 图片API API 随机图片 随机图片API function j json 径山 摄影 小米 xiaomi12x 谷歌相机 徕卡 徕卡相机 杭州 DGP.Genshin 解锁帧率 解锁视角 解锁和谐 warp cloudflare 海外VPS 海外 VPS 后宫之乌 在线观看 白毛 黑毛 日漫 nmap 小记 网络 syn tcp icmp.ping ftp udp NaiveProxy caddy klzgrad forwardproxy Xray 搭建上网服务 sni proxy 代理 pixiv 反代 反向代理 反向代理服务器 cloudflare workers nginx gmail live email qq 邮箱 邮件 电子邮件 域名邮箱 QQ邮箱 我不是药神 马鞍山 药神 新闻 备份 迁移 qi 迁移博客 国内 国外 违规 版权 廿三十 其一 iPhone14pro 照片 其二 华灯初上 合家欢乐 烟花易逝 人情长存 合家欢乐 烟花易逝 人情长存 哪吒 探针 docker template 美化 美化包 哪吒探针 监测服务器 vaultwarden server ssl 开源 项目 账号 密码 备忘录 iphone iphone 14pro 徕卡滤镜 西溪湿地 拍照 捐款 跟风 希望之壁 希望工程 网萌云 性价比 稳定 高负荷 便宜 高防 内蒙古 泉州 成都 国人商家 jsd 宝塔 技术 例子 内网穿透 内网 穿透 ip 公网 公网IP NAT frp 一键脚本 一键 耿爽 华春莹 美国 尼格 生日 相机 佳能 eos r7 适马 樱花 厦航 绘制 飞机 配置 换新 硬盘 京东 拼夕夕 板u 女武神 4070 崩坏 星穹铁道 帧率解锁 帧率 解锁 fps 独显 苹果 崩坏星穹铁道 LyricEase 网易云音乐 uwp 客户端 网易云音乐uwp 网易云音乐客户端 PowerShell 打不开 定时任务
最新微语
夜灭 3年前
戳泪点了
夜灭 3年前
狮子让一只豹子管理10只狼,并给他们分发...
夜灭 3年前
夜灭 3年前
白塔的樱花开了!
夜灭 3年前
欧洲最大云服务和托管服务商 法国OVH公...
hitokoto

使用cloudflare workers或者服务器反代pixiv

夜灭 · 1年前
2023-1-12 · 网络技术 · 2.4k · 4

使用cloudflare workers或者服务器反代pixiv

博主原先使用pixiv.cat,但是最近vps买多了,打算自己也来玩一玩

可能初学者或者小白好奇什么是反代,或者说,这个搭建服务有什么用呢?

由于总所周知的原因pixiv、twitter、ins、Google、YouTube等等很多网站(服务)在国内不靠科技手段是无法访问。

不知道在看这篇文章的你是否做过网站或写过机器人,我有一个朋友曾经开发过发二次元机器人(你说的那个朋友是不是你自己)

为了减小服务器(准确的来说应该是挂机宝)存储压力,打算只分类收集pixiv的链接,当需要发送图片的时候再去访问pixiv的原链接抓取图片

但是那时候挂机宝本来性能就紧,如果再开代理去访问pixiv源站抓取链接会很耗资源,且要多写的东西更多(吧唧吧唧什么模拟访问啊之类的,虽然不难但是很烦,但你硬要说curl的话那也是完全可以的),因为pixiv的圖片伺服器網域為 i.pximg.net,因為有盜連保護,只要 Referer 是空值或不是來自 pixiv 的網域就會返回403。所以我们的目标就是不开代理获取源站图片

pixiv 網站上的原始連結(在其他網站使用會返回403)举个栗子:https://i.pximg.net/img-original/img/2018/04/24/01/51/35/68377968_p0.png

上述例子你在不开代理的情况下是无法访问的,哪怕开了你点进去也是返回403

所以到底什么是反向代理

反向代理是一种代理服务器,它代表客户端从一个或多个服务器检索资源。然后将这些资源返回给客户端,反向代理是任何客户端联系其关联服务器中介代理服务器服务器代理人,站在服务器这边,对外屏蔽了服务器的信息,这就是反向代理。反向代理可以用一个端口跑多个应用。

正常情况下假设我们要百度搜索一样东西,应该是下面的流程(极简版)

去程:用户浏览器->(提交请求)->百度服务器

回程:百度服务器->(搜索结果)->用户浏览器

如果是反向代理的情况下,那我们的流程就变成了下面这样

去程:用户浏览器->(提交请求)->反向代理服务器->(用户提交的请求)->百度服务器

回程:百度服务器->(搜索结果)->反向代理服务器->(百度返回的搜索结果)->用户浏览器

可以看到反向代理服务器就是一个中介,他不负责处理任何数据,他只负责把你所提交的东西(数据)交给你想要访问的百度(假设你要访问的是百度),然后再把它访问后得到的结果反馈给你,中间商不赚差价(哭死)

于是我们就能引入正题(扯半天)

首先明确我们要做的是什么

上述文中提到的两个规则

  1. pixiv的圖片伺服器網域為 i.pximg.net,因為有盜連保護,只要 Referer 是空值或不是來自 pixiv 的網域就會返回403。
  2. pixiv 網站上的原始連結(在其他網站使用會返回403)

我们只要让我们的vps满足这两个条件即可拿到源站图片

那么我将分为cloudflare workers与服务器两种方法讲一遍

cloudflare 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'
      }
    })
  );
});

进入dashboard,找到workers

随后我们根据图示点击Create a Service(新建一个服务)

 

我们会到一个新建服务的界面,红圈的地方可以自定义,下面的选项不要改动,保持默认即可

全部确定好后即可点击下方的Create service完成创建,然后我们进到下一页点击右上角的Quick edit

 

进入快速编辑页面后无需多动,首先将下方箭头处的全部文本删除,然后粘贴前文提到的代码即可

 

最后不要忘记保存,然后我们就得到了一个反代链接

大多数人会觉得那个连接超级长,没关系,我们回到该workers的概览界面,然后选择Triggers

我们在此处添加域名即可

cloudflare workers教程完)

服务器篇(本教程基于已安装宝塔面板及nginx服务器上)

首先将自己打算做反代域名解析服务器,然后先申请ssl且部署完成再开始本教程

我们先进入站点根目录新建一个目录,名为cache,然后我们打开站点的配置文件

在第一行插入以下代码

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

将上述文本中的 /path/to/cache 改成刚刚新建的cache的绝对路径,如下图

在这个站点配置文件中找到以下代码并将他们全部删除或注释(通常在40-70行之间)

    #PHP-INFO-START  PHP引用配置,可以注释或修改
    include enable-php-72.conf;
    #PHP-INFO-END

    #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    include /www/server/panel/vhost/rewrite/i.acg.ge.conf;
    #REWRITE-END
    #禁止访问的文件或目录

    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }

    #禁止在证书验证目录放入敏感文件
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null;
    }

然后在删除或注释的地方添加下面的代码

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;
 }

在注释掉之后应该如我这样

怕小白找起来麻烦,我把我改完的整一套放在下方,不要照抄(你我的域名不一样),可以对照

proxy_cache_path /www/wwwroot/i.acg.ge/cache levels=1:2 keys_zone=pximg:10m max_size=10g inactive=7d use_temp_path=off;

server
{
    listen 80;
		listen 443 ssl http2;
    server_name i.acg.ge;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/i.acg.ge;

    #SSL-START SSL相关配置,请勿删除或修改下一行带注释的404规则
    #error_page 404/404.html;
    ssl_certificate    /www/server/panel/vhost/cert/i.acg.ge/fullchain.pem;
    ssl_certificate_key    /www/server/panel/vhost/cert/i.acg.ge/privkey.pem;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    add_header Strict-Transport-Security "max-age=31536000";
    error_page 497  https://$host$request_uri;
		#SSL-END

    #ERROR-PAGE-START  错误页配置,可以注释、删除或修改
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END

    #PHP-INFO-START  PHP引用配置,可以注释或修改
    # include enable-php-72.conf;
    # #PHP-INFO-END

    # #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效
    # include /www/server/panel/vhost/rewrite/i.acg.ge.conf;
    # #REWRITE-END

    # #禁止访问的文件或目录
    # location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    # {
    #     return 404;
    # }

    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }

    # #禁止在证书验证目录放入敏感文件
    # if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
    #     return 403;
    # }

    # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    # {
    #     expires      30d;
    #     error_log /dev/null;
    #     access_log /dev/null;
    # }

    # location ~ .*\.(js|css)?$
    # {
    #     expires      12h;
    #     error_log /dev/null;
    #     access_log /dev/null;
    # }
    # access_log  /www/wwwlogs/i.acg.ge.log;
    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;
 }
    access_log off;
    error_log  /www/wwwlogs/i.acg.ge.error.log;
}

保存全部,即可生效!

验证阶段(cloudflare workers与服务器均为这样验证)

访问url不带任何参数应该显示如下

pixiv的原图链接:https://i.pximg.net/img-original/img/2018/04/24/01/51/35/68377968_p0.png

将开头的i.pximg.net改为你的域名,例如我的反代域名是i.acg.ge,则改为:

https://i.acg.ge/img-original/img/2018/04/24/01/51/35/68377968_p0.png

如果这样可以正常获取到图片那么恭喜你我们成功啦!

你嫌麻烦的话可以使用本站搭建好的服务哦:

日本大阪软银(GFW):https://i.acg.ge/

日本大阪软银:https://i.acg.ma/

洛杉矶9929:https://pixiv.52.si/

香港沙田:https://i.acg.gdn/

cf workers:https://pixiv.acg.gdn/

January 12,2023 21:35:56
阅读2.4k
撰写评论
Comments
kkkqaq
502 Bad Gateway
为什么我的显示502,用的nginx
#2 1个月前 (05-21)
回复
图酱的老粉
大神,求助:我用CF搭建了,不带参数国内可以正常访问,但带了就不行了,比如:https://pixiv.tujianghhh.workers.dev/img-original/img/2021/05/01/00/06/06/89501167_p0.png
求助,谢谢!
#1 1个月前 (05-19)
回复
夜灭
@图酱的老粉:可能是反代规则有变
#1-1 1个月前 (05-19)
回复
图酱的老粉
图酱的老粉
@夜灭:CF的worker是不是被墙了
#1-2 4周前 (05-25)
回复
最新评论
夜灭
@jiyouzhan:更新了
2周前
夜灭
@unyunxio:更新了
2周前
unyunxio
大佬该更新啦 [...
2周前
3157984577
1
2周前
3157984577
6666
2周前
Chise Hachiroku
555要是安卓也有这样的程序就好了……网...
3周前
图酱的老粉
@夜灭:CF的worker是不是被墙了
4周前
22
谢谢大佬
1个月前
kkkqaq
502 Bad Gateway 为什么...
1个月前
jiyouzhan
这篇文章写得深入浅出,让我这个小白也看懂...
1个月前