The current repo belongs to Paused status, and some functions are restricted. For details, please refer to the description of repo status
169 Star 525 Fork 160

Kenvix / Tieba-Cloud-Sign
Paused

 / 详情

BDUSS检测异常问题复现,重新适配解决方案

Backlog
Opened this issue  
2021-05-03 11:03

原问题的第一个解决方案

近期发现百度更新了 http://i.baidu.com/ 页面,导致在 sfc.functions.php 中getBaiduId方法失效,且使得上个解决方案失效了,从而导致问题复现,即使BDUSS输入无问题,也无法正常绑定。

原先的函数如下:

function getBaiduId($bduss){
	$c = new wcurl('http://wapp.baidu.com/');
    $c->addCookie(array('BDUSS' => $bduss,'BAIDUID' => strtoupper(md5(time()))));
	$data = $c->get();
	$c->close();
	return urldecode(textMiddle($data,'i?un=','">'));
}

百度更新了页面框架,使得在上个解决方案中用来筛选百度ID的规则( main?un= 和 &fr=ibaidu&ie=utf-8 之间的字符)失效。
本人再次适配了一下过滤规则,仍然使用 http://i.baidu.com/ 作为获取源。
修改后的代码:

function getBaiduId($bduss){
	$c = new wcurl('http://i.baidu.com/');
    $c->addCookie(array('BDUSS' => $bduss,'BAIDUID' => strtoupper(md5(time()))));
	$data = $c->get();
	$c->close();
	return urldecode(textMiddle($data,'"username":"','","iconUrl"'));
}

实测可用。
PS:按照这个取middleText的方法,百度但凡更新一次页面框架什么的,破坏了原来的规则,就得重新适配。虽然简单易行但是有不少缺点。

+12
rocket1

Comments (7)

无语羊 created任务
无语羊 set related repository to Kenvix/Tieba-Cloud-Sign
无语羊 changed issue state from 待办的 to 进行中
无语羊 changed issue state from 进行中 to 待办的
Expand operation logs

在这里详细解释一下BDUSS验证的逻辑

主要是携带设置的BDUSS信息,访问百度的特定页面。
一般来说,附带了正确BDUSS的话,百度会返回一个带个人信息的HTML页面。
然后通过匹配两个文本之间的文本(middleText方法)截取HTML中的个人信息(username)。
如果成功匹配到了文本那么说明BDUSS是正确的,反之是错误的。

这个方法理论是可行的,但是也有不足。
百度经常改动HTML的结构,这会导致匹配不到文本,从而导致BDUSS验证一定会报错。
百度的页面很多,上面显示你用户名的页面也很多,但是但凡更新了页面,就必须跟进更新匹配规则。

因此,这就需要人持续维护。
就本项目的情况来看,维护已经停止很长时间了。
未来随着百度的更新,失效的功能会越来越多。

欧克 个人站可用,本来是有人说BDUSS绑定不上就把自己的解绑了,然后就绑不上;试了下这里的方法重新绑上了,感谢大佬

与其不断研究如何适应网页,不如找一个能稳定使用的接口,比如https://tieba.baidu.com/mg/o/profile?format=json,然后使用json_decode()处理
以及GitHub那边更新还是挺活跃的

原作者已经迁移了项目,现在维护是哪个地址呢

github 那边是 MoeNetwork/Tieba-Cloud-Sign ,最新版本 4.94,已经解决了目前 issue 的问题

感谢您提供的解决方案。 :+1:

Sign in to comment

Status
Assignees
Milestones
Pull Requests
Successfully merging a pull request will close this issue.
Branches
Planed to start   -   Planed to end
-
Top level
Priority
参与者(4)
684690 kdwnil 1578930755
PHP
1
https://git.oschina.net/kenvix/Tieba-Cloud-Sign.git
git@git.oschina.net:kenvix/Tieba-Cloud-Sign.git
kenvix
Tieba-Cloud-Sign
Tieba-Cloud-Sign

Search

181749 a2d7925e 1850385 181749 9f8568a7 1850385