JavaScript 逆向遇到请求加密,直接把爬虫代码注入到浏览器中执行的技巧

JavaScript 逆向遇到请求加密,直接把爬虫代码注入到浏览器中执行的技巧

💡 原文中文,约7500字,阅读约需18分钟。
📝

内容提要

本文介绍了如何编写爬虫以获取医疗网站的文章。首先,通过浏览器抓包获取疾病分类和文章列表的请求。由于请求参数加密,建议直接在浏览器中使用JavaScript调用ajax函数进行爬取,并通过本地HTTP服务器存储数据。爬虫代码使用Promise和async/await处理异步请求,并实现了分页和断点续传机制。最后,提出了将复杂爬虫逻辑与浏览器交互的方案。

🎯

关键要点

  • 本文介绍了如何编写爬虫以获取医疗网站的文章。

  • 爬虫的目标是爬取每个疾病分科下的所有文章。

  • 使用浏览器控制台抓包获取疾病分类和文章列表的请求。

  • 请求参数加密,建议使用JavaScript调用ajax函数进行爬取。

  • 通过本地HTTP服务器存储数据,解决数据存储问题。

  • 爬虫代码使用Promise和async/await处理异步请求。

  • 实现了分页和断点续传机制,确保爬虫的稳定性。

  • 提出了将复杂爬虫逻辑与浏览器交互的方案,使用WebSocket进行请求和响应的处理。

🔎

延伸解读

请求加密的挑战

在爬虫开发中,遇到请求参数加密是常见的挑战。本文提到的加密方式并非简单的base64,而是通过JavaScript动态生成的。这意味着开发者需要在浏览器环境中执行代码,以便利用网站的加密逻辑,避免直接逆向加密算法的复杂性。

数据存储的解决方案

为了有效存储爬取的数据,建议在本地搭建HTTP服务器。通过POST请求将数据实时写入本地文件,可以避免数据丢失。这种方法不仅简化了数据存储过程,还能确保数据的即时性,适合需要频繁爬取的场景。

异步请求的处理

使用Promise和async/await处理异步请求是本文的一个亮点。这种方式使得代码更易读且逻辑清晰,尤其在处理分页和断点续传时,能够有效管理请求的顺序和状态,提升爬虫的稳定性和效率。

延伸问答

如何使用浏览器抓包获取医疗网站的请求信息?

可以通过浏览器控制台抓包,查看疾病分类和文章列表的请求信息。

请求参数加密的情况下,如何进行爬虫?

建议直接在浏览器中使用JavaScript调用ajax函数进行爬取,避免跨域问题。

如何存储爬取的数据?

可以在本地启动一个HTTP服务器,将爬取的数据通过POST请求发送到服务器,存储到文件中。

爬虫代码中如何处理异步请求?

使用Promise和async/await来处理异步请求,确保代码的可读性和稳定性。

如何实现爬虫的分页和断点续传机制?

在爬虫代码中手动设置最新获取的分类和文章,处理分页逻辑以实现断点续传。

如何将复杂爬虫逻辑与浏览器交互?

可以通过WebSocket与浏览器建立连接,将请求发送给浏览器中注入的代码,并获取响应。

🏷️

标签

➡️

继续阅读