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

news2024/12/22 16:51:55

一、网站运行时间轴 

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

网络运行时间轴

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

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.coloradmin.cn/o/1490106.html

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

相关文章

6.Java---二维数组

打印二维数组的每个元素 上图所示,我们打印的时候将行列的数字写死,但是实际上如果这个数组有很多元素我们还要一个个数数嘛?这不是很占用我们的时间啦!因此引出下文. 代码精进 二维数组的每个元素是一个一维数组 打印二维数组的法2 打印出的格式如下: 不规则的二维数组…

LeetCode每日一题之 复写0

目录 题目介绍: 算法原理: 特殊位置处理: 代码实现: 题目介绍: 题目链接:. - 力扣(LeetCode) 算法原理: 这种对数组元素进行修改,移动的题目我们仍然可以…

使用Android Native Hook技术解决VLC播放器闪退的问题

文章目录 1.概述2.问题描述3.问题分析4.问题解决5.总结 1.概述 在做公司的一个TOB的需求时,发现调起Unity提供的3D播放器播放网络在线视频时闪退了,然后就拉着相关部门的人一起分析问题,最后定位到是VLC里面用到的系统日志打印函数在部分的系…

《UE5_C++多人TPS完整教程》学习笔记26 ——《P27 在线会话测试(Testing An Online Session)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P27 在线会话测试(Testing An Online Session)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&#xff0…

二分查找是偏爱细节的魔鬼

大家好,我是 方圆。二分查找本质上是一个规模退化且固定规模减小一半的分治算法,它的 思路很简单,但细节是魔鬼。通常我们会认为二分查找的应用场景是数组有序(单调),但实际上它也能在无序数组中应用&#…

【轻快图片管理系统】-系统预览截图

在线体验 如果你觉得项目不错,还望动动你的手指给点点star,让更多人看到优秀的项目!!! 为了便于大家在线体验,本系统提供了演示地址,可以通过下面的演示地址和账号进行登录体验系统功能。 演示…

leetcode 热题 100_和为 K 的子数组

题解一: 前缀和数组哈希表:可以计算所有子数组之和暴力求解,但复杂度太高。对于子数组求和的过程,我们可以采用前缀和数组进行优化,前缀和数组中pre[index]代表nums[0]~nusm[index]之和,当我们要计算子数组…

【树】【异或】【深度优先】【DFS时间戳】2322. 从树中删除边的最小分数

作者推荐 【二分查找】【C算法】378. 有序矩阵中第 K 小的元素 涉及知识点 树 异或 DFS时间戳 LeetCode2322. 从树中删除边的最小分数 存在一棵无向连通树,树中有编号从 0 到 n - 1 的 n 个节点, 以及 n - 1 条边。 给你一个下标从 0 开始的整数数组…

Vscode连接外部虚拟环境

如果vscode工程目录里面有一个超级大的虚拟环境文件夹,怎么说都不是一件优雅的事,因此我们希望这个虚拟环境在工程目录外部,我们开始: 1. 复制虚拟环境目录路径:E:\envs\test 2. 在vscode中打开文件夹,CT…

全球首个隐私计算一体机国际标准发布 蚂蚁摩斯参与编制

近日,IEEE 标准协会(IEEE-SA)正式发布并推行了全球首个隐私计算一体机国际标准《隐私计算一体机技术要求》(IEEE 3156-2023)。该标准由蚂蚁集团推动,中科院信息工程研究所、北京交通大学、中国信息通信研究…

第十六天-爬虫selenium库

目录 1.介绍 2.使用 selenium 1.安装 2.使用 1.测试打开网页,抓取雷速体育日职乙信息 2.通过xpath查找 3.输入文本框内容 send_keys 4.点击事件 click 5.获取网页源码: 6.获取cookies 7.seleniumt提供元素定位方式:8种 8.控制浏览…

第一弹:Flutter安装和配置

目标: 1)配置Flutter开发环境 2)创建第一个Flutter Demo项目 Flutter中文开发者网站: https://flutter.cn/ 一、配置Flutter开发环境 Flutter开发环境已经提供集成IDE开发环境,因此需要配置开发环境的时候&#xf…

Gitlab 安装部署

目录 1、Jenkins 结合 Gitlab 构建 CI/CD 环境 CI/CD 介绍 CI/CD 流程 Jenkins 简介 GitLab 简介 项目部署方式 CI系统的工作流程 2、搭建 GitLab 安装 GitLab 配置 GitLab 修改root密码 访问 GitLab 开机自启 3、使用 GitLab 管理 GitLab 关闭 GitLab 注册功能…

Git分支补充

我们在合并分支时并不总是一帆风顺,有些时候也会遇到“合并冲突”的问题。 下面我们来还原一下: 创建分支dev $ git checkout -b dev 切换到一个新分支 dev $ git branch * devmaster我们将 text.txt 内容改为 欢迎关注CSDNkeduo并将修改的内容提交到 d…

【Oracle Database】如何远程连接服务器、创建用户、从本地dmp导入表

C:\Users\test>imp test/123456ip/orcl:1521 fileE:\db.dmp tablestable1,table2Import: Release 11.2.0.3.0 - Production on 星期一 3月 4 12:59:09 2024Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.IMP-00058: 遇到 ORACLE 错误 1263…

EdgeX Foundry 安全模式安装部署

文章目录 一、安装准备1.官方文档2. 克隆服务器3.安装 Docker4.安装 docker-compose 二、安装部署1.docker-comepse2.启动 EdgeX Foundry3.访问 UI3.1. consul3.2. EdgeX Console EdgeX Foundry # EdgeX Foundryhttps://iothub.org.cn/docs/edgex/ https://iothub.org.cn/docs…

CUDA学习笔记02:测试程序hello world

参考资料 Win10下在VS2019中配置使用CUDA进行加速的C项目 (配置.h文件,.dll以及.lib文件等)_vs2019 cuda-CSDN博客 配置流程 1. 新建一个一般的项目 2. 项目建好后,在项目里添加.cu测试文件 测试的.cu文件命名为cuda_utils.cu&…

bert 相似度任务训练简单版本,faiss 寻找相似 topk

目录 任务 代码 train.py predit.py faiss 最相似的 topk 数 任务 使用 bert-base-chinese 训练相似度任务,参考:微调BERT模型实现相似性判断 - 知乎 参考他上面代码,他使用的是 BertForNextSentencePrediction 模型,Bert…

在idea中用模板骨架初始创建maven管理的web项目时没有src有关的目录的解决方案

一.问题如下 二.解决方法 首先关闭当前项目,接着修改全局设置,重新创建项目 在VM Options中添加"-DarchetypeCataloginternal",点击ok保存 点击创建,如果创建成功没报错且有src,就ok了。 当然如果出现以下…

【C++】十大排序算法之 插入排序 希尔排序

本次介绍内容参考自:十大经典排序算法(C实现) - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类: 比较类排序:通过比较来决定元素间的相对次序…