python反反爬_Python反反爬之JS混淆---动态Cookie(持续更新详细教程)

本文介绍了如何应对动态Cookie的反爬策略,通过分析JS混淆代码,理解Cookie的生成过程,并使用工具解混淆和验证猜想。最终,通过Python调用JS执行获取加密密文,实现对目标网页的爬取。
摘要由CSDN通过智能技术生成

写在前面

经过上一题的练习JS混淆---源码乱码,我们已经对JS混淆有了大致的了解,这次我们再来练习一道同类型的题目,只不过这次是动态Cookie

首先,让我们了解一下什么是Cookie

Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。由于“Cookie”具有可以保存在客户机上的神奇特性, 因此它可以帮助我们实现记录用户个人信息的功能, 而这一切都不必使用复杂的CGI等程序

举例来说, 一个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie 文件的形式保存在每个用户的机器上。如果使用浏览器访问 Web, 会看到所有保存在硬盘上的 Cookie。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的 Web 站点的信息。在这里的每个 Cookie 文件都是一个简单而又普通的文本文件。透过文件名, 就可以看到是哪个 Web 站点在机器上放置了Cookie(当然站点信息在文件里也有保存)

简单理解就是,Cookie相当于你浏览Web站点时,相对于这个站点的身份证号,如果说身份证号错误,肯定是不能正常访问这个站点的;这也是这次题目的考察内容

题目

题目网址点我去刷题

提取全部5页发布日热度的值,计算所有值的加和,并提交答案

分析网页

由于是动态Cookie,为了避免其他Cookie的影响,所以使用浏览器的无痕模式进行调试,按f12并选中【Preserve log】

【Preserve log】:保留请求日志,跳转页面的时候勾选上,可以看到跳转前的请求(可以让我看到更详细的请求)

我们还是首先查看一下【XHR】里面的内容

可以很清楚的看到,页面当中的发布日热度值,就来源于这条链接 【http://match.yuanrenxue.com/api/match/2】

我们尝试着在浏览器中打开这条链接,会得到这么一条信息

通过Unicode编码转换工具,翻译过来是:{"error": "出错啦~嘤嘤嘤"}

可以看得出,开发者还是挺会玩的,嘿嘿

出现这样的错误,也在意料之中,因为这道题目考的是动态Cookie,你去请求包含信息的链接时,Cookie不对,肯定是会报错的

我们继续查看XHR里面的内容,可以发现确实存在Cookie这么一个值的,而且这个加密的值跟上次的题目很像

那么这个Cookie是怎么生成的呢?

Cookie从何而来

我们回到调试工具,这次我们查看所有的请求信息,看看有没有其他的花样

可以发现,有两个名为【2】的请求

我们分别查看这两个请求,可以发现,第一个请求是不带Cookie的,第二个请求是带Cookie

那么,我们就可以大胆的猜测,是不是第一个名为2的请求,执行了什么操作,让第二个名为2的请求带了Cookie

使用Fiddler.exe抓包

要想知道,第一个名为2的请求,到底发生了什么,我们可以使用Fiddler抓包软件,进行抓包查看

首先,我们打开这个软件(网上搜索就可以直接下载使用)

接着,打开无痕浏览器,进入到刷题网站,也就是这个链接【http://match.yuanrenxue.com/match/2】

最后,我们回到Fiddler软件,会得到如下的信息

可以看到,熟悉的名为【2】的请求,也在当中

经过上面的猜测,我们知道,很有可能是第一个请求在暗地里做了些不为人知的操作

我们点击第一个【2】请求,点击response里面的Textview按钮,可以看到一段被混淆过的JS代码

看到这里的小伙伴可能就大概明白了,当发起第一个名为2的请求时,服务器端返回了一段JS代码,然后在浏览器里面执行了

现在我们只需要将这段混淆过的JS代码翻译一下,就能知道第一个请求到底做了些什么了

翻译混淆代码

我们将返回的JS代码复制下来,记得不要复制开头的script和结尾的/script

然后,我们来到猿人学提供的翻译混淆代码的工具点我进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值