Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于被要求人机验证的建议方案 #416

Closed
250king opened this issue Jul 19, 2023 · 18 comments
Closed

关于被要求人机验证的建议方案 #416

250king opened this issue Jul 19, 2023 · 18 comments

Comments

@250king
Copy link

250king commented Jul 19, 2023

HarukaBot 版本

v1.6.0.post5

功能建议

我们深知现在B站为防止bot爬取动态而添加了验证码。针对此情况,我想提出以下方案,希望对贵项目有参考价值:

  • 调用App端API获得动态详情,目前GitHub已经有大量调用此类API的方法,但需要额外编写程序来实现图片的生成(模板注入),不过这个方法最有可行性和稳定性。
  • 继续使用Web端,但处于登录状态,可能会进一步降低验证码出现频率。

额外信息(可选)

No response

@x402
Copy link

x402 commented Jul 21, 2023

Harukabot的前身DDbot好像用的是第二种方案(

搞错了,Harukabot前身叫dd-bot,上面说的用登录状态的是ddbot,另一个项目https://github.com/Sora233/DDBOT

@250king
Copy link
Author

250king commented Jul 22, 2023

刚刚跟一位也是用Harukabot的群主讨论一下,他试过第二种方案,但两天后复现

其实我一直在想

  • PC端的UA会不会出现这种问题
  • 后端怎么判断有bot行为,或者说前端又会收集什么东西传送到后端。说白了触发因素

如果说Web端真的无法解决,那只能App API试试了。目前该端口只要签名正确,就可以正常返回动态内容,但要自己生成图片

@250king
Copy link
Author

250king commented Jul 23, 2023

现在还发现一个比较严重的问题:如果一个IP长期无法完成人机验证,会不停弹出来
Screenshot_2023-07-23-23-30-37-68.jpg

@misaka10843
Copy link

我认为是需要PC UA+cookies+适当的请求延迟(尽量是在动态发出的3-5min后再访问动态页面),或者直接使用RSShub来获取动态内容,但是这样的话就会需要设计排版

@misaka10843
Copy link

misaka10843 commented Jul 24, 2023

但是似乎使用PC UA也并不能解决问题
#366 (comment)

所以个人判断是b站先检测是否登录,然后如果同一个浏览器一直都是访问动态类的话会查询最近几次是否为发布后的几分钟内就立即访问了(但是并没有进行验证x)

现在唯一能确定的是因为在一段时间内访问特定类型的页面次数过多导致的风控

@250king
Copy link
Author

250king commented Jul 24, 2023

我认为是需要PC UA+cookies+适当的请求延迟(尽量是在动态发出的3-5min后再访问动态页面),或者直接使用RSShub来获取动态内容,但是这样的话就会需要设计排版

RRSHub不是几百年前就寄了?

@misaka10843
Copy link

我认为是需要PC UA+cookies+适当的请求延迟(尽量是在动态发出的3-5min后再访问动态页面),或者直接使用RSShub来获取动态内容,但是这样的话就会需要设计排版

RRSHub不是几百年前就寄了?

并没有,活的好好的

@250king
Copy link
Author

250king commented Jul 24, 2023

我服务器的IP被污染了,现在都是验证码(哪怕已经魔改源码,出于登录状态以及删除了过往的cookie)
最气的是在服务器远程打开浏览器又不弹出验证码

@misaka10843
Copy link

我服务器的IP被污染了,现在都是验证码(哪怕已经魔改源码,出于登录状态以及删除了过往的cookie) 最气的是在服务器远程打开浏览器又不弹出验证码

尝试使用统一的UA打开试试

@250king
Copy link
Author

250king commented Jul 28, 2023

哪种ua?

@misaka10843
Copy link

机器人使用的什么UA就用什么UA打开,在我这边测试的时候是发现b站是封的IP下面的所有特定UA(但是大概率会连坐直接封IP

@250king
Copy link
Author

250king commented Jul 28, 2023

疑似风控升级
Screenshot_2023-07-28-21-15-19-13.jpg

@gq20110204
Copy link

gq20110204 commented Jul 28, 2023

看了下讨论 或许搞复杂了
如果用api去拿内容的话 其实还有一种更简单的解决方法 (应该算是漏洞?
SocialSisterYi/bilibili-API-collect#686 (comment)
参考这个issues 直接用网页api接口就行 只需要把ua设置成'Mozilla/5.0' 其他啥也不用传 直接就能绕过验证请求到内容
目前我自己写的爬动态视频脚本就在用这个方法
而且即使在被风控的情况下 用这个接口依旧可以稳定拿到内容(环境 家宽 和自己的脚本跑在同一个服务器)

我还发现了一个更奇怪的现象 风控机制似乎对版本很新的ua豁免?
电脑 最新版 chrome 115 不登账号也可以看到动态
(Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36)
手机 iPhone 系统版本相对较老 直接弹验证码
(Mozilla/5.0 (iPhone; CPU iPhone OS 15_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Mobile/15E148 Safari/604.1)

@250king
Copy link
Author

250king commented Jul 29, 2023

我用Postman不改ua,使用已经登录且正常的cookie也🉑

@NAOLIU
Copy link

NAOLIU commented Jul 31, 2023

我用Postman不改ua,使用已经登录且正常的cookie也🉑

请问大概怎么改,我这边用了UA还是频繁弹,我是haruka最新版,harukabot如何能够使用cookie?

@250king
Copy link
Author

250king commented Aug 1, 2023

Cookie好像要等更新

其实现在只要单独更新bilireq库,以及设置其他ua就可以正常工作了。我现在暂时没有发现问题

@QwindF
Copy link

QwindF commented Aug 4, 2023

so,有详细的解决方案了吗

@250king
Copy link
Author

250king commented Aug 5, 2023

#419 (comment)

@250king 250king closed this as completed Aug 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants