首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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还原代码的话更加容易了。

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

END

在看越多,更新越快

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200514A0RAFU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券