专栏首页日常学pythonni**的网站的登录需要的sensor_data怎么来

ni**的网站的登录需要的sensor_data怎么来

sensor_data 这个东西,相信都有很多人知道这个东西,我之前也搞过这个网站的登录,但是不成功,只能得到某些网页的数据,对于登录,当时是一直被拒绝的,就像下面这样。

在今天,终于把它拿下了。

接下来说下这个东西需要的东西,如果你会使用ast还原代码的话,这个网站对你来说还是很容易的。还原之后是这个样子的:

不过这个网站很神奇,我在还原代码之后,使用 fiddler 替换 js文件,网站报错了,然后我试着不开重定向 js 文件,还是不行,清除了 cookie 所所有的东西都是不行,但是别人的电脑却可以,如果有大神知道原因的话,希望能交流下。

还原之后,一眼下去就知道这个网站检测的啥了,都是些浏览器指纹,在第一次初始化 sensor_data 的时候,只用到了少部分浏览器指纹,比如 ua、浏览器宽高等这些属性,比较多的指纹都在几个定时器上面加载的,如下面:

所以需要在一些获取浏览器指纹的地方打个断点,多个几个也没事,宁可错杀,不可放过。

里面比较厉害的是,浏览器指纹这些都是明文的,不加密,这样子如果量爬的话,就会很容易被封浏览器,需要大量的浏览器指纹,这也是个很大难度的事,有经验的也可以交流下。

里面的 getforminfo 这个函数是获取当前页面的 input 表单的属性,这个可以模拟,也可以直接固定,反正我固定也是可以过的,不需要改变。

里面的定时函数需要自己在适当的时候调用,大概的调用顺序如下:

这个有经验的话还是好处理的,接下来就是比较难的了,里面设置了很多监听事件,如 click、mousedown、keydown、mousemove等17个事件,不过主要是 mousemove 和 mousedown这两个事件,因为mousedown 这个事件会更新 abck cookie,mousemove的话无处不在,但是只记录前100个 mousemove,其他的暂时不清楚,没细看。

如果需要模拟事件的话,可以自己在 js里面加上些自己的js语句来收集事件轨迹,用 fiddler 的重定向来就行了。注意的是,一定需要 mousedown 事件是最后的,因为只有这个事件才会更新 sensor_data, 其他的都是在收集信息,所以需要他是最后一个事件。

来到这里就差不多成功了,就只剩下模拟请求了。他这里初始化的话会一开始就有两个请求,

第一个是请求获取这个文件的 js,这个文件就是用来生成 sensor_data 的,第二个是获取初始化的 sensor_data 并发送到服务器校验。

接下来定时器会有个请求,因为他更新了sensor_data, 所以也需要发送到服务器。

因为我们需要模拟登录,所以还会有两个 mousedown 事件,一个是点击登录来显示登录控件的。

还有一个是点击登录按钮来进行登录的

所以还需要两个这样的请求,所以总共校验了 5 次,这个是很重要的。

如果你只是模拟了四次,成功率大概有 50%左右,而且分分钟也运行不了,模拟了五次之后,成功率就稳稳的了

接下来就是登录请求了,登录请求的 data 参数我直接固定了,因为我只是学习下,并不爬或者做其他事,所以直接固定了事。登录请求需要东西只有这些即可:

最后,还是比较重要的,因为这个网站里面需要用到很多中间变量来一步步加密 sensor_data,每次加密的变量都和上一次有关的,所以需要使用 nodejs 开个 api 接口来搞,直接用 execjs 来的话,很难搞,开个 api 也不难,直接如下:

最后的最后,做完这些,你就能登录了,这个网站难点在于轨迹,不过好像轨迹也不怎么校验,其他的都不难,,里面的加密都只是用到 base64 和一个摘要算法好像,基本都是明文,所以不难,你会操作ast还原代码的话更加容易了。

原创不易,对你有帮助的话,希望能点个在看再走,能转发分享留言就更好不过了。

本文分享自微信公众号 - 日常学python(daily_learn),作者:sergiojune

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 爬虫必须要了解的 JavaScript 混淆安全加固

    https://segmentfault.com/a/1190000019423501

    sergiojune
  • 数说那些年我们一起经历的高考

    作者:徐麟,某互联网公司数据分析狮,个人公众号数据森麟(id:shujusenlin)

    sergiojune
  • 安装mitmproxy以及遇到的坑和简单用法

    mitmproxy 是一款工具,也可以说是 python 的一个包,在命令行操作的工具。

    sergiojune
  • 《软件测试52讲》总结-01

    作为测试工程师,大家设计测试用例的目标是保证系统在各种应用场景下的功能是符合设计要求,所以大家在设计测试用例的时候就需要保证用例覆盖尽可能的更多、更全面。以“用...

    用户2149234
  • Spring Security 实战干货:实现自定义退出登录

    上一篇对 Spring Security 所有内置的 Filter 进行了介绍。今天我们来实战如何安全退出应用程序。

    码农小胖哥
  • 虚拟化技术发展编年史

    我已经想不起来是从什么时候开始的,突然就对计算机历史产生了浓厚的兴趣。于是我想着,要不以后所有系列文章的开篇都先和大家聊聊历史吧。其实说来挺有意思,看过去到底是...

    SammyLiu
  • 利用python和百度地图API实现数据地图标注

    地址:http://developer.baidu.com/map/jsdemo.htm#c1_19

    IT派
  • 【STM32H7教程】第18章 STM32H7的GPIO应用之跑马灯

    本章教程为大家介绍STM32H7的GPIO应用之跑马灯,跑马灯作为经典的测试例程,可以让大家对STM32H7应用有个简单的整体认识。

    armfly
  • 博客 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型

    国际数据挖掘领域的顶级会议 KDD 2018 在伦敦举行,今年 KDD 吸引了全球范围内共 1480 篇论文投递,共收录 293 篇,录取率不足 20%。其中滴...

    AI研习社
  • 学界 | 滴滴 KDD 2018 论文详解:基于强化学习技术的智能派单模型

    国际数据挖掘领域的顶级会议 KDD 2018 在伦敦举行,今年 KDD 吸引了全球范围内共 1480 篇论文投递,共收录 293 篇,录取率不足 20%。其中滴...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券