[本地部署版]访问B站API过于频繁导致被暂时封禁
3Shain opened this issue · comments
考虑加入缓存
本地部署也会出现这种问题吗?
本地部署也会出现这种问题吗?
目前仅本地部署会有此问题
解决方案是使用更完善的带有缓存的后端,目前公共服务器是把/api路径反向代理到专用的缓存后端以解决海量请求
本地部署也会出现这种问题吗?
目前仅本地部署会有此问题
解决方案是使用更完善的带有缓存的后端,目前公共服务器是把/api路径反向代理到专用的缓存后端以解决海量请求
如果是按照 #16 的方法,只需要缓存一个face链接的话,那就不需要用什么特别专用的缓存后端,仅仅用Nodejs内部自带的缓存就能解决了吧,(看到了你的BiliChat.CacheServer)这个方法应该也可以在浏览器上也部署一个。
本地部署也会出现这种问题吗?
目前仅本地部署会有此问题
解决方案是使用更完善的带有缓存的后端,目前公共服务器是把/api路径反向代理到专用的缓存后端以解决海量请求如果是按照 #16 的方法,只需要缓存一个face链接的话,那就不需要用什么特别专用的缓存后端,仅仅用Nodejs内部自带的缓存就能解决了吧,(看到了你的BiliChat.CacheServer)这个方法应该也可以在浏览器上也部署一个。
浏览器最终所有http请求都是要走xhr的,所以肯定是逃不过跨域限制和referer检查的。
本地部署也会出现这种问题吗?
目前仅本地部署会有此问题
解决方案是使用更完善的带有缓存的后端,目前公共服务器是把/api路径反向代理到专用的缓存后端以解决海量请求如果是按照 #16 的方法,只需要缓存一个face链接的话,那就不需要用什么特别专用的缓存后端,仅仅用Nodejs内部自带的缓存就能解决了吧,(看到了你的BiliChat.CacheServer)这个方法应该也可以在浏览器上也部署一个。
浏览器最终所有http请求都是要走xhr的,所以肯定是逃不过跨域限制和referer检查的。
这也不完全对,加上了<meta name="referrer" content="no-referrer">
,图片就不会有Referrer,参见http://vtbs.moe,所以可以跳过在服务器下载头像这一步,只返回一个头像链接
本地部署也会出现这种问题吗?
目前仅本地部署会有此问题
解决方案是使用更完善的带有缓存的后端,目前公共服务器是把/api路径反向代理到专用的缓存后端以解决海量请求如果是按照 #16 的方法,只需要缓存一个face链接的话,那就不需要用什么特别专用的缓存后端,仅仅用Nodejs内部自带的缓存就能解决了吧,(看到了你的BiliChat.CacheServer)这个方法应该也可以在浏览器上也部署一个。
浏览器最终所有http请求都是要走xhr的,所以肯定是逃不过跨域限制和referer检查的。
这也不完全对,加上了
<meta name="referrer" content="no-referrer">
,图片就不会有Referrer,参见http://vtbs.moe,所以可以跳过在服务器下载头像这一步,只返回一个头像链接
这方法不错。
虽然有cache control,但是我认为还是给后端加上一个lru-cache比较好。
这样如果有多个用户同时查看一个直播间也不会导致重复访问api。
我刚刚测试了一下暂时封禁,希望能帮到你→_→(我刚刚本地调试biliChat就被封了。。。
应该是15分钟解封(~10:12-10:27),不知道多次被封会不会不一样
间隔170毫秒不会被封,
间隔160毫秒就会被封
(持续5分钟
测试用代码:
const got = require('got')
const wait = ms => new Promise(resolve => setTimeout(resolve, ms));
(async () => {
for (;;) {
got('https://api.bilibili.com/x/space/acc/info?mid=349991143', { json: true })
.then(({ body }) => console.log(body.data.name))
await wait(170)
console.log('ok')
// 170ms ok
// 160ms 403
}
})()
猜测rate limit是一秒6请求
不知道有没有burst limit