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

一、网站运行时间轴 

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

网络运行时间轴

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

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.rhkb.cn/news/269103.html

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

相关文章

docker基线安全修复和容器逃逸修复

一、docker安全基线存在的问题和修复建议 1、将容器的根文件系统挂载为只读 修复建议: 添加“ --read-only”标志,以允许将容器的根文件系统挂载为只读。 可以将其与卷结合使用,以强制容器的过程仅写入要保留的位置。 可以使用命令&#x…

基于Springboot的助农管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的助农管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构&…

台式电脑电源各线的电压和电流输出和输出电流

台式电脑电源是电脑硬件的重要组成部分。 它为计算机的各个部件提供所需的电压和电流。 不同的硬件设备和组件有不同的电压和电流输出。 下面详细介绍台式电脑电源各线的电压,包括3.3V、5V、12V、-12V、-5V和5VSB,以及它们的输出电流和用途。 3.3V&#…

Java递归生成本地文件目录树形结构

Java递归生成本地文件目录(树行结构) 1.读取txt文件保存的文件目录结构 2.递归生成本地文件目录树形结构,并修改目录文件前缀进行递增 3.结果截图 4.代码 package com.zfi.server.device;import io.swagger.annotations.Api; import org.springframework.web.bind…

Leaflet 加载高德地图

前言 在前面的文章中,我们学习了如何使用 Leaflet 创建一个基本的地图。在本文中,我们将学习如何在 Leaflet 中加载高德地图,并结合实际应用构建地图点击事件。 一、介绍 高德地图是一款由高德软件提供的数字地图服务,在国内使用…

数学建模【灰色关联分析】

一、灰色关联分析简介 一般的抽象系统,如社会系统、经济系统、农业系统、生态系统、教育系统等都包含有许多种因素,多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中,哪些是主要因素,哪些是次要因素;哪些因素…

Apache SeaTunnel 2.3.4 版本发布:功能升级,性能提升

​Apache SeaTunnel团队自豪地宣布2.3.4版本正式发布!本次更新聚焦于增强核心功能,改善用户体验,并进一步优化文档质量。 此次版本发布带来了多项重要更新和功能增强,包括核心与API的修复、文档的全面优化、Catalog支持的引入&…

【S32DS报错】-7-程序进入HardFault_Handler,无法正常运行

【S32K3_MCAL从入门到精通】合集: S32K3_MCAL从入门到精通https://blog.csdn.net/qfmzhu/category_12519033.html 问题背景: 在S32DS IDE中使用PEmicro(Multilink ACP,Multilink Universal,Multilink FX&#xff09…

【Kotlin】函数

1 常规函数 1.1 无参函数 fun main() {myFun() }fun myFun() {println("myFun") // 打印: myFun } 1.2 有参函数 1)常规调用 fun main() {myFun("myFun") // 打印: myFun }fun myFun(str: String) {println(str) } 2)形参指定默…

Doris实战——美联物业数仓

目录 一、背景 1.1 企业背景 1.2 面临的问题 二、早期架构 三、新数仓架构 3.1 技术选型 3.2 运行架构 3.2.1 数据模型 纵向分域 横向分层 数据同步策略 3.2.2 数据同步策略 增量策略 全量策略 四、应用实践 4.1 业务模型 4.2 具体应用 五、实践经验 5.1 数据…

张宇30讲学习笔记

初等数学 x \sqrt{x} x ​是算数平方根,一定≥0; x 2 \sqrt{x^2} x2 ​|x| x2|x2||x|2 x3≠|x3||x|3 不等式 a>0,b>0,则ab≥2 a b \sqrt{ab} ab ​ 对数 ln a b \frac{a}{b} ba​lna-lnb 高等数学 单调性 线性代数

【六袆 - MySQL】MySQL 5.5及更高版本中,InnoDB是新表的默认存储引擎;

InnoDB 这是一个MySQL组件,结合了高性能和事务处理能力,以确保可靠性、健壮性和并发访问。它体现了ACID设计哲学。它作为一个存储引擎存在,处理使用ENGINEINNODB子句创建的或修改的表。请参阅第14章“InnoDB存储引擎”以获取有关架构细节和管…

Android14之解决编译报错:bazel: no such file or directory(一百八十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【暗月安全】2021年渗透测试全套培训视频

参与培训需要遵守国家法律法规,相关知识只做技术研究,请勿用于违法用途,造成任何后果自负与本人无关。 中华人民共和国网络安全法(2017 年 6 月 1 日起施行) 第二十二条 任何个人和组织不得从事入侵他人网络、干扰他…

12 权重衰退【李沐动手学深度学习v2课程笔记】

1.权重衰退 使用均方范数来进行权重衰退 柔性限制 柔性限制对最优解的影响 参数更新法则 总结 2.代码实现 %matplotlib inline import torch from torch import nn from d2l import torch as d2l 生成数据 n_train, n_test, num_inputs, batch_size 20, 100, 200, 5 true_w, t…

42、网络编程/多点通信和域套接字通信模型20240304

一、多点通信之广播的收发端实现 1.广播发送端代码&#xff1a; #include<myhead.h>int main(int argc, const char *argv[]) {int sfdsocket(AF_INET,SOCK_DGRAM,0);//创建套接字if(sfd-1){perror("socket,error");return -1;}int broadcast1;//设置套接字广…

Java解决杨辉三角

Java解决杨辉三角 01 题目 给定一个非负整数 *numRows&#xff0c;*生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRo…

Python字符串中%d,%.f的用法

在字符串中&#xff0c;我们经常需要改变其中的一些几个字符&#xff0c;比如 第一个d%就是epoch1&#xff0c;会随着epoch的变化而变化。同理&#xff0c;后面的也是。打印出的结果就是 其中&#xff0c;epoch迭代了3次&#xff0c;从0开始。会发现 d%&#xff0c;是整数&…

【Python】外网远程登录访问jupyter notebook+pycharm使用ipython

第一步&#xff1a;创建python虚拟环境 conda create -n py3610 python3.6.10第二步&#xff1a;安装ipython pip install ipython pip install ipython notebook第三步&#xff1a;创建 IPython Notebook 服务器配置文件 # 进入python交互shell&#xff0c;设置密码 >&…

iOS 17.0 UIGraphicsBeginImageContextWithOptions 崩溃处理

在升级到iOS17后你会发现&#xff0c;之前版本运行的很好&#xff0c;这个版本突然会出现一个运行闪退。报错日志为*** Assertion failure in void _UIGraphicsBeginImageContextWithOptions(CGSize, BOOL, CGFloat, BOOL)(), UIGraphics.m:410 跟踪到具体的报错位置如下所示&a…