pixiv图片代理,参考https://pixiv.cat
在链接后输入pid,如
https://pixiv.shojo.cn/34844544
或在pid后指定序号,如
https://pixiv.shojo.cn/34844544-1
用户发出请求后,查询MongoDB是否有缓存,有缓存则直接返回相关数据
若无缓存,则会尝试从MongoDB中获取pixiv的access_token。若access_token已过期,则会通过环境变量中的refresh_token请求pixiv的api刷新access_token,并将其存入MongoDB中。
最后使用access_token,请求pixiv的api获取图片数据,存入MongoDB中的的缓存并返回给用户
此部分待更新
- 准备好MongoDB
- 到MongoDB官网获取一个免费的MongoDB数据库。由于使用的是Vercel免费的Serverless服务,考虑到连接速度,因此尽量选择位于美国AWS的数据库。
- 在数据库中分别创建在
cache
database下的illust
collection和在secrets
database下的pixiv
collection - 在
pixiv
下创建PIXIV_ACCESS_TOKEN
,如图所示 - 记住该数据库的地址
- 准备好pixiv的
refresh_token
- 使用该脚本获取
refresh_token
- 使用该脚本获取
- 搭建图片反向代理
- 有能力者可以自建反向代理服务器,反向代理
i.pximg.net
- 若无法自建反向代理服务器,可以使用Cloudflare的服务
- 若有顶级域名,可将域名通过NS/CDN方式接入Cloudflare,记录类型选择
CNAME
,名称根据你的需要填入,内容填入i.pximg.net
,并开启代理。然后在规则->转换规则
处,创建修改请求头
规则,如下图设置 - 若无顶级域名,则使用Cloudflare Workers搭建反向代理,每日100,000次请求,参考代码来自pixiv.cat
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' } }) ); });
- 若有顶级域名,可将域名通过NS/CDN方式接入Cloudflare,记录类型选择
- 有能力者可以自建反向代理服务器,反向代理
- 部署到Vercel