第一章:JS逆向的基础知识
1.1 什么是JS逆向
JS逆向(JavaScript Reverse Engineering)是指通过分析前端JavaScript代码,提取其中的数据逻辑、API请求、加密方式等信息的过程。其目的是绕过前端的动态加载机制,直接获取我们需要的数据。
1.2 动态网页的工作原理
传统的静态网页数据直接通过HTML展示,而动态网页通常通过以下方式加载内容:
- 前端JavaScript:前端通过JS代码动态生成内容。
- AJAX请求:前端通过AJAX(异步JavaScript和XML)向后端发送请求,获取数据后动态渲染页面。
- 单页应用(SPA):前端通过框架(如Vue、React)实现动态路由和数据加载。
爬虫需要通过逆向分析前端代码,找到数据来源和请求方式,从而模拟请求获取数据。
1.3 常见的JS逆向场景
- 数据反爬:一些网站通过JS加密或动态加载数据,防止爬虫直接抓取。
- API逆向:前端通过调用API获取数据,爬虫需要找到API接口并模拟请求。
- 登录验证:部分网站需要用户登录后才能访问数据,爬虫需要模拟登录流程。
第二章: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. 找到数据请求
- 查找
fetch
、xhr
、ajax
等关键词,定位数据请求的代码。 - 示例代码:
fetch('https://api.example.com/data', {method: 'GET',headers: {'Content-Type': 'application/json'} }