前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据采集面对JS加密无所适从?善用这3个工具,搞定一大半的JS逆向!

数据采集面对JS加密无所适从?善用这3个工具,搞定一大半的JS逆向!

作者头像
州的先生
发布2020-08-27 16:11:57
1.1K0
发布2020-08-27 16:11:57
举报
文章被收录于专栏:州的先生

在如今的互联网,想要简简单单地通过一个HTTP请求就采集到数据已经是越来越难了。越来越多的网站对网页的数据加强了限制。

其中,最常见的,就是在请求头里面添加各种加密参数,如:token、UUID等请求头。

面对这些加密限制,并不是完全无能为力的。对于大多数网站而言,在了解一定JavaScript脚本知识的基础上,善用下述3个工具,就可以搞定。如果搞不定的,也离搞定不远了。

浏览器调试控制台

浏览器的调试控制台是进行数据采集的小伙伴再熟悉不过的工具了。基本上,网页数据的ajax接口都是通过浏览器的调试控制台找到的。

除了找数据接口,我们还可以直接在调试控制台中寻找加密请求头参数的生成位置,也就是找到它是通过调用哪个JavaScript脚本文件生成的。

在此举个例子,在某网站上,其数据接口的请求需要附带上几个特殊的请求头:

如果请求中不带上这几个头参数,嗯,直接返回错误码。

很显然,这几个参数不会平白无故产生,一定是从什么地方引用或是生成的。这时候,我们就可以通过调试控制台进行搜索:

比如上面举例的请求头参数,我们就搜索到了:

点击一个搜索结果,就会跳转到对应文件的显示界面。在大多数情况下,我们看到的是一堆经过压缩的JavaScript代码,嗯,就像一堆屎一样:

那么密密麻麻的代码,哪里分得清哪是哪呢?这就要借助到下面的工具了

JavaScript代码格式化工具

面对一堆一坨的JavaScript,只有把它们格式化、恢复成本来的面貌才能继续我们的探索之旅。

JavaScript代码格式化的工具有很多,州的先生一般现用现搜,选择自己中意的网站即可:

经过JavaScript代码格式化,我们终于能够看清它本来的面貌了,这就像《千与千寻》里洗干净了澡的河神一样。

把它复制到文本编辑器中,有高亮提示的那种。州的先生一般配合使用VS Code和Notepad++。

继续对它抽丝剥茧,搜索请求头参数对应的JavaScript生成函数。

js2py模块

通常来说,JavaScript代码进行的操作,在Python中也能实现,比如下面这些JavaScript代码:

用来获取时间戳、拼接字符串等,可以直接用Python代码还原。但是如果面对一些比较繁琐的JavaScript函数,比如下图这种:

又臭又长,那还是通过Python直接调用执行这个JavaScript函数吧。

有很多Python第三方模块提供了在Python中执行JavaScript代码的功能,州的先生经常使用的是js2py这个模块。

直接把JavaScript代码里面的函数以字符串的形式复制Python文件中,赋值给一个变量,直接调用即可:

代码语言:javascript
复制
>>> import js2py

>>> f = js2py.eval_js('function f(x) {return x + x}')

>>> f(2)

4

>>> f()

nan

>>> f(f)

function f(x) { [python code] }function f(x) { [python code] }

简单、直接、粗暴。

最后

通过这三个工具,基本可以找到加密函数、加密参数和位置,它们的生成方式,以及通过Python代码对其进行生成。然后就是一顿操作猛如虎,顺利拿到数据了。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 州的先生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 浏览器调试控制台
  • JavaScript代码格式化工具
  • js2py模块
  • 最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档