【学习心得】网站运行时间轴(爬虫逆向)

一、网站运行时间轴 

        掌握网站运行时间轴,有助于我们对“请求参数加密”和“响应数据加密”这两种反爬手段的深入理解。

网络运行时间轴

二、从网站运行的时间轴角度来理解两种反爬手段

1、加载HTML
        这是浏览器访问网站时的第一步,服务器会返回基础的HTML结构。在这个阶段,爬虫可以直接获取到HTML内容。

2、加载JS并初始化
        随后,浏览器会加载并执行网页中的JavaScript代码。这些代码可能包含重要的逻辑,比如数据加密、页面动态渲染等。

3、用户触发某个事件
        用户可能会在网页上进行一些操作,如点击按钮、填写表单等。这些操作会触发JavaScript事件。

4、调用某段JS加密参数
        在用户触发事件后,JavaScript可能会执行加密函数,对即将发送到服务器的数据进行加密。这是请求参数加密的关键步骤。加密后的参数对于爬虫来说难以理解,因为它们不再是明文形式。

5、给服务器发信息(XHR-SEND)
        加密后的参数会通过XMLHttpRequest(XHR)或其他方式发送到服务器。这一步对于爬虫来说是一个挑战,因为即使能够截获请求,也难以解析加密的参数。

6、接收服务器数据
        服务器处理请求后,会返回响应数据。这些数据可能是加密的,特别是在响应数据加密的情况下。

7、调用某段JS解密响应
        浏览器接收到加密的响应数据后,会使用JavaScript中的解密函数将其解密为可读的形式。这一步对于爬虫来说同样是困难的,因为它们需要模拟执行JavaScript代码来解密数据。

8、刷新网页渲染
        最后,解密后的数据会被用来更新网页的内容或状态,用户可以看到新的信息。对于爬虫来说,如果能够成功解密数据并模拟网页的渲染过程,就能够获取到这些信息。

三、破解请求参数加密和响应数据加密思路

请求参数加密和响应数据加密的逆向思路,我专门出了两篇文章来说明,下面是文章的链接:

【学习心得】请求参数加密的原理与逆向思路icon-default.png?t=N7T8http://t.csdnimg.cn/iXC8e【学习心得】响应数据加密的原理与逆向思路icon-default.png?t=N7T8http://t.csdnimg.cn/Jr8oa

        回顾之前的文章中,我提到的两种逆向思路的第一步都是【寻找入口,快速定位】,可见找到加解密的JS函数非常关键,但往往在逆向过程中面对众多JS文件,成千上万行JS代码时毫无头绪。因此我写这篇网络运行时间轴的目的就是给破解这两种反爬手段一个通用的思考路径。那就是深刻理解其加解密时机。

(1)请求参数加密反爬的加密时机

        加密通常在用户触发某个事件后、发送请求之前进行。例如,在填写表单并提交时,JS代码可能会拦截表单提交事件,加密表单数据后再发送到服务器。加密的内容通常包括用户输入的数据、查询参数、API密钥等敏感信息。

于是可以通过这样的步骤来进行破解(寻找入口,快速定位的方法有很多这里介绍的步骤只起到一个抛砖引玉的作用):

  1. 第一步:寻找加密参数
  2. 第二步:定位发起程序
  3. 第三步:查看调用堆栈
  4. 第四步:分析加密入口
  5. 第五步:模拟加密过程

(2)响应数据加密反爬的解密时机

        解密通常在接收到服务器响应后进行,但在将数据呈现给用户之前。例如,某小说网站的小说加密内容,就是在渲染给读者之前,通过JS代码解密成明文再呈现。响应数据加密通常涵盖服务器返回的所有数据类型,包括HTML内容、JSON数据、图片、视频等。

于是可以通过这样的步骤来进行破解(寻找入口,快速定位的方法有很多这里介绍的步骤只起到一个抛砖引玉的作用):

  1. 第一步:寻找加密数据
  2. 第二步:定位发起程序
  3. 第三步:查看调用堆栈
  4. 第四步:分析解密入口
  5. 第五步:模拟解密过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/720460.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#双向链表:只用泛型节点类ListNode<T>设计的最短的双向链表包含初始化链表数据和遍历链表各节点

目录 一、涉及到的知识点: 1.ListNode 类使用自动属性设计 2. 泛型节点类设计的误区 二、仅仅定义泛型节点类,实现最短的双向链表 一、涉及到的知识点: 1.ListNode 类使用自动属性设计 public class ListNode {public object Object { …

javascrip几种基本的设计模式

单例模式 ES5 function Duck1(name:string){this.namenamethis.instancenull }Duck1.prototype.getNamefunction(){console.log(this.name) }Duck1.getInstancefunction(name:string){if(!this.instance){this.instance new Duck1(name)} } const aDuck1.getInstance(a) const…

【系统架构设计师考试大纲】

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要知识图谱考试目标考试要求考试题目题型分析计算机基础知识(20%)信息化战略与规划(9%)软件工程(25%)系统架构设计(35%)信…

Qt在windows编译hiredis依赖库

目录 0 前言1 Qt安装遇到的问题2 hiredis源码下载2.0 redis源码下载2.1 hiredis源码下载2.2 编译hiredis源码2.3 遇到的问题列表参考资料0 前言 当前参与的项目需要用Qt对redis进行操作,以前没玩过这块,顺手记下笔记梳理起来~ 1 Qt安装 安装版本下载:https://download.qt…

算法D36 | 贪心算法5 | 435. 无重叠区间 763.划分字母区间 56. 合并区间

今天的三道题目,都算是 重叠区间 问题,大家可以好好感受一下。 都属于那种看起来好复杂,但一看贪心解法,惊呼:这么巧妙! 还是属于那种,做过了也就会了,没做过就很难想出来。 不过大…

⭐北邮复试刷题2369. 检查数组是否存在有效划分__DP (力扣每日一题)

2369. 检查数组是否存在有效划分 给你一个下标从 0 开始的整数数组 nums ,你必须将数组划分为一个或多个 连续 子数组。 如果获得的这些子数组中每个都能满足下述条件 之一 ,则可以称其为数组的一种 有效 划分: 子数组 恰 由 2 个相等元素…

初学arp欺骗

首先准备一台靶机这里用虚拟机的win10 已知网关与ip地址(怕误伤) 现在返回kali从头开始 首先探测自己的网关 然后扫内网存活的ip 发现有3台 用nmap扫一下是哪几台 成功发现我们虚拟机的ip 现在虚拟机可以正常访问网络 接下来直接开梭 ip网关 返回虚拟机…

win11部署自己的privateGpt(2024-0304)

什么是privateGpt? privategpt开源项目地址 https://github.com/imartinez/privateGPT/tree/main 官方文档 https://docs.privategpt.dev/overview/welcome/welcome PrivateGPT是一个可投入生产的人工智能项目,利用大型语言模型(LLMs)的…

智能通用平台(Intelligent General-purpose Platform)

根据2024年的最新人工智能技术发展趋势,我为您提出的项目需求表如下: 项目名称:智能通用平台(Intelligent General-purpose Platform)项目概述:结合最新的生成式人工智能、多模态学习和量子计算技术&#…

Windows Docker 部署 Jenkins

一、简介 今天介绍一下在 Windows Docker 中部署 Jenkins 软件。在 Windows Docker 中,分为两种情况 Linux 容器和 Windows 容器。Linux 容器是通常大多数使用的方式,Windows 容器用于 CI/CD 依赖 Windows 环境的情况。 二、Linux 容器 Linux 容器内部…

Linux系统宝塔面板搭建Typecho博客并实现公网访问本地网站【内网穿透】

文章目录 前言1. 安装环境2. 下载Typecho3. 创建站点4. 访问Typecho5. 安装cpolar6. 远程访问Typecho7. 固定远程访问地址8. 配置typecho 前言 Typecho是由type和echo两个词合成的,来自于开发团队的头脑风暴。Typecho基于PHP5开发,支持多种数据库&#…

Vue.js中的diff算法:让虚拟DOM更高效

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

516. 最长回文子序列【leetcode】/动态规划

516. 最长回文子序列 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1: 输入:s …

【2024.03.05】定时执行专家V7.1最新版GUI界面 - 基于wxWidgets 3.2.4 + CodeBlocks + GCC9.2.0

《定时执行专家》是一款制作精良、功能强大、毫秒精度、专业级的定时任务执行软件。软件具有 25 种【任务类型】、12 种【触发器】触发方式,并且全面支持界面化【Cron表达式】设置。软件采用多线程并发方式检测任务触发和任务执行,能够达到毫秒级的执行精…

Windows C++:深入理解Windows API:用户身份验证、访问令牌获取和权限管理

目录 CreateProcessAsUser介绍 函数原型 参数详解 返回值 使用注意 代码实例 代码解释: 注意事项: 用户身份验证和令牌管理 进程创建和管理 会话和桌面管理 权限和安全 用户身份验证、访问令牌获取和权限管理代码示例 步骤概述 注意事项…

【深度学习笔记】5_5 LeNet

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 5.5 卷积神经网络(LeNet) 在3.9节(多层感知机的从零开始实现)里我们构造了一个含单隐藏…

c# 连接oracle 及对应获取数据集

1、数据库配置xml&#xff0c;首先连接成功后会自动创建xml并保存到对应xml&#xff0c;如下 static string ConnPath AppDomain.CurrentDomain.BaseDirectory "ConnOrcle.xml"; 声明xml名称&#xff0c;便于后续写入对应数据库参数 2、创建xml /// <summar…

182基于matlab的半监督极限学习机进行聚类

基于matlab的半监督极限学习机进行聚类&#xff0c;基于流形正则化将 ELM 扩展用于半监督&#xff0c;三聚类结果可视化输出。程序已调通&#xff0c;可直接运行。 182matlab ELM 半监督学习 聚类 模式识别 (xiaohongshu.com)

「滚雪球学Java」:JDBC(章节汇总)

&#x1f3c6;本文收录于「滚雪球学Java」专栏&#xff0c;专业攻坚指数级提升&#xff0c;助你一臂之力&#xff0c;带你早日登顶&#x1f680;&#xff0c;欢迎大家关注&&收藏&#xff01;持续更新中&#xff0c;up&#xff01;up&#xff01;up&#xff01;&#xf…

SpringBoot中实现拦截器和过滤器

1.过滤器和拦截器简述 过滤器Filter和拦截器Interceptor&#xff0c; 在功能方面很类似&#xff0c; 但在具体实现方面差距还是比较大。 1.1 运行顺序不同&#xff1a;Filter →Servlet →Interceptor→Controller&#xff1b;1.2 配置方式不同&#xff1a;Filter在web.xml中…