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

2024-03-05 21:12

本文主要是介绍【学习心得】网站运行时间轴(爬虫逆向),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、网站运行时间轴 

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

网络运行时间轴

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

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.chinasem.cn/article/777824

相关文章

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

如何在一台服务器上使用docker运行kafka集群

《如何在一台服务器上使用docker运行kafka集群》文章详细介绍了如何在一台服务器上使用Docker运行Kafka集群,包括拉取镜像、创建网络、启动Kafka容器、检查运行状态、编写启动和关闭脚本... 目录1.拉取镜像2.创建集群之间通信的网络3.将zookeeper加入到网络中4.启动kafka集群

PostgreSQL如何用psql运行SQL文件

《PostgreSQL如何用psql运行SQL文件》文章介绍了两种运行预写好的SQL文件的方式:首先连接数据库后执行,或者直接通过psql命令执行,需要注意的是,文件路径在Linux系统中应使用斜杠/... 目录PostgreSQ编程L用psql运行SQL文件方式一方式二总结PostgreSQL用psql运

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

速盾高防cdn是怎么解决网站攻击的?

速盾高防CDN是一种基于云计算技术的网络安全解决方案,可以有效地保护网站免受各种网络攻击的威胁。它通过在全球多个节点部署服务器,将网站内容缓存到这些服务器上,并通过智能路由技术将用户的请求引导到最近的服务器上,以提供更快的访问速度和更好的网络性能。 速盾高防CDN主要采用以下几种方式来解决网站攻击: 分布式拒绝服务攻击(DDoS)防护:DDoS攻击是一种常见的网络攻击手段,攻击者通过向目标网

如何在运行时修改serialVersionUID

优质博文:IT-BLOG-CN 问题 我正在使用第三方库连接到外部系统,一切运行正常,但突然出现序列化错误 java.io.InvalidClassException: com.essbase.api.base.EssException; local class incompatible: stream classdesc serialVersionUID = 90314637791991

Java EE学习心得

–Java EE学习心得     1.    称为编程专家的秘诀是: 思考-----编程--------思考------编程…….. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程,完事后,再思考  我编的程序还有那些不好的地方和要改进的地方,可以增加写什么功能等等;然后再去编程; 2. 先搭建整体框架再抠细节,在编程中不管是什么要先做出来,再去问怎么做!即是:先K