爬虫JS逆向 - 从入门到实战

embedded/2025/2/19 15:45:49/

第一章:JS逆向的基础知识

1.1 什么是JS逆向

JS逆向(JavaScript Reverse Engineering)是指通过分析前端JavaScript代码,提取其中的数据逻辑、API请求、加密方式等信息的过程。其目的是绕过前端的动态加载机制,直接获取我们需要的数据。

1.2 动态网页的工作原理

传统的静态网页数据直接通过HTML展示,而动态网页通常通过以下方式加载内容:

  1. 前端JavaScript:前端通过JS代码动态生成内容。
  2. AJAX请求:前端通过AJAX(异步JavaScript和XML)向后端发送请求,获取数据后动态渲染页面。
  3. 单页应用(SPA):前端通过框架(如Vue、React)实现动态路由和数据加载。

爬虫需要通过逆向分析前端代码,找到数据来源和请求方式,从而模拟请求获取数据。

1.3 常见的JS逆向场景

  1. 数据反爬:一些网站通过JS加密或动态加载数据,防止爬虫直接抓取。
  2. API逆向:前端通过调用API获取数据,爬虫需要找到API接口并模拟请求。
  3. 登录验证:部分网站需要用户登录后才能访问数据,爬虫需要模拟登录流程。

第二章:JS逆向的核心方法

2.1 使用浏览器调试工具(F12)

浏览器的开发者工具(F12)是JS逆向的重要工具。以下是常用功能:

1. 网络请求分析
  • Network面板:可以查看前端发送的所有网络请求(包括AJAX请求)。
  • XHR/ Fetch:重点关注AJAX请求的URL、请求头、请求体和响应内容。
  • 复制请求头和URL:方便后续模拟请求。
2. 源代码审计
  • Sources面板:可以查看前端JavaScript代码,分析数据生成逻辑。
  • 断点调试:设置断点,观察变量的值和函数的执行过程。
3. 模拟请求
  • Postman:可以将F12中抓取的请求复制到Postman中,模拟API调用。

2.2 JS代码审计

通过分析前端JavaScript代码,可以找到数据来源和加密逻辑。以下是常用技巧:

1. 找到数据请求
  • 查找 fetchxhrajax 等关键词,定位数据请求的代码。
  • 示例代码:
    fetch('https://api.example.com/data', {method: 'GET',headers: {'Content-Type': 'application/json'}
    }

http://www.ppmy.cn/embedded/162568.html

相关文章

【前端框架】Vue3 中 `setup` 函数的作用和使用方式

在 Vue 3 里,setup 函数是组合式 API 的核心入口,为开发者提供了更灵活、高效的组件逻辑组织方式。以下为你详细介绍其作用和使用方式: 作用 1. 初始化响应式数据 在 setup 函数中,我们能够使用 ref 和 reactive 等函数来创建响…

sql注入之盲注(bool盲注,时间盲注)

bool盲注 使用场景: 当页面不会返回明确的数据库错误信息,但能通过页面内容/状态的差异间接判断SQL语句执行结果时。 原理: 攻击者通过构造布尔条件(如 AND 11、OR 12),观察页面的响应差异。 通过逐字符猜测目标数据&#xff…

全平台搭载旭日5!科沃斯GOAT智能割草机器人全新系列正式开售

要闻 近日,科沃斯全新发布的GOAT A Series 和 GOAT O Series割草机器人,将在多国市场正式上市发售。作为业界最强的割草机器人产品之一,GOAT致力为割草机带来基于机器人视觉的专业定位解决方案。科沃斯GOAT全新系列产品全平台搭载地瓜机器人…

2.14日学习总结

题目一:接雨水问题 1.题目描述:给定一个数组 height 表示一个地形的高度图,数组中的每个元素代表每个宽度为 1 的柱子的高度。计算按此排列的柱子,下雨之后能接多少雨水。 2.示例:输入 height [0,1,0,2,1,0,1,3,2,1…

1.【线性代数】——方程组的几何解释

一 方程组的几何解释 概述举例举例一1. matrix2.row picture3.column picture 概述 三种表示方法 matrixrow picturecolumn picture 举例 举例一 { 2 x − y 0 − x 2 y 3 \begin{cases} 2x - y 0 \\ -x 2y 3 \end{cases} {2x−y0−x2y3​ 1. matrix [ 2 − 1 − 1 …

Golang的容器化部署流程

# Golang的容器化部署流程 什么是容器化部署 容器化部署是将应用程序、运行环境及其依赖项打包在一起,以便可以在任何环境中快速、一致地运行的技术。它提供了更高效的资源利用、更便捷的部署和更稳定的环境。 的容器化支持 天生支持跨平台编译,使得将Go…

【鸿蒙】从网页打开获取文件,并转成base64

鸿蒙原生代码 import web_webview from ohos.web.webview; import picker from ohos.file.picker; import { BusinessError } from ohos.base; import { fileIo } from kit.CoreFileKit; import util from ohos.util;Entry Component struct UploadFile {controller:web_webvi…

中间件系列--【运维手册规范】

一、常用集群副本数设置规范 1.HDFS DataNode数量为<2,则副本数为1DataNode数量3,副本数为2DataNode数量>3,副本数为3 2.Kafka 分区数为Broker数量的1-2倍Broker数量<2,副本数为1Broker数量3,副本数为2Broker数量>3,副本数为3 3.ElasticSearch 分片数为Es Data Nod…