请教如何拿到百度 bsk[data] 加密参数?目测是 JS 加密得出的

2017-08-05 14:57:02 +08:00
 Antigen

正在写一个批量申诉百度贴吧账号的脚本,遇到这个加密参数,希望各位大神不吝赐教,谢谢!

提供三个被封的测试账号:我晓遮芜严陕芋、躺宪谋、阎录狂沥午伊猿,密码全部是:kuli401

登陆百度贴吧: https://tieba.baidu.com/ 依次打开:右上角更多 > 服务中心 > 系统处理记录 > 解除并神功护体 > 开始申请,填写解封理由,开始抓包,最后点击“提交申请”会出验证码,抓包数据如下(下面的代码是完成打码之后的 Post 数据,自动打码我已经搞定了。):

headers = {
    'Host': 'tieba.baidu.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
    'Accept-Encoding': 'gzip, deflate',
    'Referer': 'http://tieba.baidu.com/pmc/membermanual?msgid=7080795',
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'X-Requested-With': 'XMLHttpRequest',
    'Content-Length': '2063',
    'Connection': 'keep-alive',
}
cookies = {
    'fixed_bar': '1',
    'TIEBAUID': '62025b4b9be62651ed1db931',
    'TIEBA_USERTYPE': '8d7ee1d441d6674c22ee3835',
    'STOKEN': '4124e1aad3e37a55c9b057c157f341924ad6ced0751863546e97c920ae9bdaad',
    'FP_LASTTIME': '1501588052684',
    'BAIDUID': '76062A7E654C67F4EFB9BC548D354648:FG=1',
    'FP_UID': 'd0d9ad33b8d7eb4e99b9bb12714aa740',
    'BDUSS': 'VNUktPRmt4bXVobTctRkI2VWxkSVJwaHhidmxGU0ZsdWlFdFBjYWxpVk45NmRaSUFBQUFBJCQAAAAAAAAAAAEAAADSElSsztLP~tXazt~Rz8nC0~MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE1qgFlNaoBZTG',
}
payload = {
    'msgid': '7080795',
    'pid': '0',
    'tid': '0',
    'tbs': 'null',
    'content': '您好!我的这个账号为什么被封了?麻烦您给解封,谢谢了!',
    'captcha_vcode_str': vcode_md5,
    'captcha_input_str': vcode,
    'bsk[data]': 'omzVouOACqkNljzDbdOB_af501e9 ……………………………………………………非常长的一段'
}
http = requests.post('http://tieba.baidu.com/pmc/commitmanual', headers=headers, cookies=cookies, data=payload)

目前的问题是不加入 bsk[data]参数,返回错误代码:210009 系统错误,所以必须搞定这个参数。

自己水平有限,只能在这个页面找到加密 JS 文件: https://fex.bdstatic.com/bsk/??dknsaZmLdyKfEeIVbKxn_dcc70f7.js,omzVouOACqkNljzDbdOB_af501e9.js

然后该怎么办?希望各位大神帮忙解决,或者提供一个思路,我还需要学习哪些知识才能解决这个问题?麻烦指点一二,谢谢!

4713 次点击
所在节点    Python
6 条回复
ctsed
2017-08-05 15:25:31 +08:00
哟,批量解封,贴吧机器人刷广告的?
codeface
2017-08-05 15:47:16 +08:00
pyexecjs
ctsed
2017-08-05 16:16:23 +08:00
刷完广告还要把人工客服系统艹一遍,真是不要碧莲
FanWall
2017-08-05 16:25:24 +08:00
代码混淆,学一点 js 吧
md5
2017-08-05 16:35:53 +08:00
贴吧黄图哥?
bigtrace
2017-08-23 05:23:39 +08:00
楼上说的不对,这个不是 js 混淆,而是用 js 对参数进行加密。

我通过加 breakpoint 发现,只要加载了你说的那个 js 之后,在 console 里面

你可以查看_BSK object 的结构,里面的 function a(){} 用来算出 bsk。

从当前页面得到 tbs 参数(假设为 ea8e71a7b73bbc181503433430 )后,在 console 里面输入

t={}
a={IN:{tbs: "ea8e71a7b73bbc181503433430"} , OUT: t}
_BSK.a("omzVouOACqkNljzDbdOB", a)
t.data

这里的 t.data 便是你想要的_BSK
JVwFUmcLBmUQOX99TW4YA0hdZWVqFEIHC3xWCmdYd3JrEjIOQCAoFAZYAjYoWxoDLgpzFg5iGn18KQgNdgMGB2cGAn1bbEcAUldpdTYXVw0eORVTIBlkJGASak1VPCoeAVoyOURZRTo9WjZaGXgRZyVeOg0kRU1dIFVQMAUpKxAXRWl1LhdXDR58UhZ2AXVkZQJpQxEldV9PETg5SXh5S2UKL...8ckMRLHVfTxNvZ1UaGlx4GXMWDWMafX4KExYgHQZYd1cJf1B1RABGRStleB9VQ0w4AgpnVHJyaxA2Dl86IVFXRmx1Xg9nBjNBM1gffw1pbl5JNCxfQEQyBhMRNWxAHltcZQAzS0MDBW0fEHEcZhEhQDwKZCwmNhxHcmJXGgRafwh3fzYEdQtyXg0KLlQEbCAWWDBIbDVYGAgoMnUQTRkOY1QWdwxoYWAAcDxSLyUPHBxoZFMDGV9rBH1ETXICZzgfDRAgHQZcd1cJfS8ZOnxIS2cgaQdPF1gsC1UgSA==


不同时刻即使带入相同 tbs,解出来的_BSK 也会变,不过对于发帖并没有影响。只要带入其中一个值就可以,便可以成功发帖。
具体百度是如何进行 js 加密的,得从以下代码找出逻辑。
http://www.jianshu.com/p/61fe2c7ac0b6

代码放在我的一个帖子里面, 你也可以通过打断点,在 chrome 里的 source 中找到相应文件。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/380623

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX