今天有个朋友向我求助
,别让希望我帮他爬取一个网站上的加密加密内容。网站内容如下: 打开上述网址,难倒进入开发者模式
,爬虫这些数据的攻克请求接口,正常逻辑是网站通过搜索页面上内容进行锁定请求接口。但是战教,进行搜索时
,别让发现什么都搜索不到
。加密加密 通过上图发现
,难倒这些数据只请求了一个接口,爬虫当我点击负载和响应这两个标签
,攻克发现数据是源码库网站被加密了,所以,战教我们搜索不了页面的别让内容。 负载加密内容 响应加密内容 这时相信小伙伴
,心中都有一个疑问浏览器为啥是明文? 浏览器在收到数据后 ,会自动采用服务器返回的资源文件对加密内容进行解密并显示明文 ,这也是我们能够在页面上看到正常内容的原因。 通过XHR/提取断点,该方法是通过匹配URL包括请求路径关键字进行断点,高防服务器具体配置如下图: 这时我们重新刷新网页,如下图所示,网站就成功进入我们上一步设置的断点中。 其中 ,h就是加密后的请求体参数,然后我们从调用堆栈中一步步往前推。至于如何找呢
?这里是有一个技巧的,我们需要找到前一步请求体还没加密,后一步请求体就加密成功了 。 请求体加密后 请求体加密前 其中上图o就是请求体加密之前的建站模板参数
,s就是加密后的参数。chunk-common.a25fd3ce.js就是进行加密的js
。通过点击堆栈的js名称就可以定位到对应的地方
。 经过上一步分析 ,我们知道o就是加密之前的参数,就在js代码找o定义的位置,亿华云如下图所示
: 下面代码就是请求体的参数
,通过上述代码发现id是通过uuid方法生成的
。 接着我们需求扣取这个uuid方法。通过鼠标悬停在这个方法上面,就会弹出面板
,如下图所示: 点击后就会调到uuid方法定义的地方,如下图所示: 把这段代码扣取下面 ,如下所示
: 把this关键的全部删除它 。 然后通过node进行运行,如下图所示报错了e没有定义。云计算 于是,我们再去源码中找改值是什么
?通过选中该值
,经过几次的确认
。该值是NaN,如下图所示: 我们再自己扣取的代码写死它,再次运行 。如下图所示 : 发现这是报randomStr没有定义 ,我们再去源码找这个方法进行补环境。通过搜索发现了randomStr方法,该方法有调用了random 。于是香港云服务器我们两个方法一起扣取下来
。 再次运行 ,没有报错了 ,成功打印了uuid,如下图所示
: 把之前扣取下来的请求体 ,id字段固定值替换成uuid函数生成的动态值
,如下图所示: 最重要的一步就是扣取加密的JS代码啦, 在请求体参数附近查看this.aes.encode(a)加密方法
,如下图所示: 通过上面介绍的方面快速定位到这个加密的方法
,如下图所示: 该方法又调用了另外一个方法this.encryptCode,通过关键搜索也找到了encryptCode方法,如下图所示
: 加密方法 按照编程习惯 ,附近也会有对应的解密方法的,如下图所示
: 解密方法 现在加密和解密的方法都找到了,我们把它全部扣取下面进行调试,发现缺什么方法再进行补。重新定义一个方法生成加密请求头
,后续让python调用这个方法并传入分页参数 。如下图所示: 测试该方法是否能正常生成加密请求头
,执行如下命令: 执行上述方法后
,输入如下图所示
: 这里介绍一个非常快捷的方式用python模拟一个浏览器请求
,首先我们先在开发者模式选择这条请求,然后右击选择**将所有列表复制为cURL(Bash)**,如下图所示: 然后,来的这个工具网站[1],粘贴刚才复制的cURL信息,就可以根据自己喜欢的编程语言生成模拟浏览器请求的代码
,如下图所示: 然后 ,把生成的代码拷贝下来 ,进行修改。通过python的第三方库execjs调用js代码并执行对应的方法
。 以读的模式打开test.js并赋值给jscode 通过execjs调用jscode对象,并通过call方法调用encrypt加密方法
,并传入分页参数page
。 下图是python中的完整代码
: 执行上述代码后,成功获取网站的数据如下图所示: 在python中使用execjs库 ,出现UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xac in position 244: illegal multibyte sequence,一般遇见编码问题先看看代码里写没写encoding=utf-8
,没写的话写加上试试。加了也不行
。通过在python代码中加入如下代码: 上述脚本已经上传上传到gitee,有需要的小伙伴可以自行获取。gitee上的仓库主要是分享一些工作中常用的脚本
。小伙伴可以frok或者watch仓库,这样有更新可以及时关注到。 仓库地址:https://gitee.com/didiplus/script 工具网站: https://curlconverter.com/



























