前言
这次给大家带来的是一个2500的爬虫外包项目,在这里肯定有人说这个不值这么多,也有人会各种嘲讽。但是别忘了,人的眼界不一样,做事的决定自然会不同。
如果2500能给你带来25000的利润,那么你会选择毫不犹豫的支付吗?话不多说,看聊天记录,
还是挺久以前做的了。(我后面再给大家一一道来,暂时先看咱们的教程。)
分析(x0)
随便进入一个分类,点击进入某直播间
当我们点击弹幕直播框时,它会要求咱们登录账号。这也实属正常,没办法那咱们就登录吧。
登录成功后,咱们抓一下这个发送弹幕的包:
确实尴尬,我不知道发送什么,就说了句您好,没想到小姐姐很惊讶地说您好,您也好......然后说听完一首《飘向北方》就下播了......我不知道他下播了后,我还是否可以发送弹幕。
不管了,我先抽支烟看看小姐姐听完这首歌再接着写。
emmm,roomid为直播间的房间号,content为我发送的内容。
roomid可以在url中看得到的,前面那个图我没截出来,自己看一下就知道了。
t为时间戳,sign签名也是JavaScript加密的。其它值不变,自己发送两次弹幕抓包对比一下就好了。
分析(x1)
有人会奇怪你怎么知道t为时间戳......这玩意还需要说么,还是说一下吧,查找一下t的来源,我觉得像这种短的参数,最好别直接搜t,你会搜出来一大堆的。我建议搜临近的值sign,因为你提交的表单中有这么多的参数,那么在js文件中基本也会有相对应的参数的。
t:i意思是把i赋值给t,而
i = (new Date).getTime()
哦豁,没学过前端的人就看不懂这个是啥意思了,这个其实就是JavaScript语法中的取现行时间。
再用我们的鬼鬼js调试工具看看效果:
可以看到它是一直在变化的,就像咱们的时间一样一直在流逝变化。不懂什么是时间戳的自己去谷歌一下。
或者在咱们的控制台上也可以得到它:
既然它是利用JavaScript这么个语法生成的参数,那么我们用Python如何实现?
OK,至此已经解决第一个加密的参数。
分析(x2)
接下来就是大头菜了,咱们分析sign签名是如何得到的:
好吧,很多位置参数,压根不知道是如何得来的但是可以看到它用到 i 这个参数,也就是咱们的时间戳。
还是debug一下吧:
打个断点,在浏览器上随意发送一弹幕,发现g就是appkey是一个定值,c为一个字典,咱们要取的是c字典中data键所对应的值:
是不是好熟悉,这不就是咱们post中的data的值么?那么就只剩下d了。d为一个字典,而咱们需要的是d里面的一个叫token键对应的值:
凭我经验,这个d根本不需咱们去找它应该就是咱们的cookies,直接搜一下就完事了......