当前位置: 首页 > news >正文

十七:爬虫-JS逆向(上)

1、什么是JSJS反爬是什么?JS逆向是什么?

JS:JS全称JavaScript是互联网上最流行的脚本语言,这门语言可用于HTMLweb,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。JavaScript 是一种轻量级的编程语言。JavaScript 是可插入 HTML 页面的编程代码。JavaScript 插入 HTML 页面后,可由所有的现代浏览器执行。

JS反爬:JS反爬是指爬虫在获取网页数据时,遇到了通过JavaScript代码实现的反爬措施。JS反爬技术的实现方式包括动态渲染、异步加载、验证码、IP限制等多种方式。这些技术可以有效地防止爬虫的抓取,保护网站的数据安全。

JS逆向: JS逆向是指通过分析和破解JavaScript代码,获取反爬措施的规则和实现方式,从而绕过反爬措施,实现爬虫的抓取。JS逆向需要具备一定的JavaScript编程能力和代码分析能力,对于爬虫开发者来说是一项高级的技能。
注意: 进行JS逆向可能会涉及到法律风险和道德问题,因此在进行爬虫开发时,应该遵守相关法规和道德规范,避免侵犯他人的合法权益

2、JS逆向的大致流程

  1. 分析目标网站的反爬措施:使用浏览器开发者工具或网络抓包工具分析目标网站的JavaScript代码和网络请求数据,了解反爬措施的实现方式和规则。常见的反爬措施包括动态渲染、异步加载、验证码、IP限制等。

  2. 理解和分析JavaScript代码:使用代码编辑器或开发者工具等工具,分析网站的JavaScript代码,了解其运行原理、代码结构和实现方式。这可以帮助你找到反爬措施的规则和实现方式,从而更好地绕过它们。

  3. 绕过反爬措施:根据分析结果,采用相应的技术和方法绕过反爬措施。比如,对于动态渲染的网页,可以使用无头浏览器(如Selenium)模拟浏览器的操作,从而获取渲染后的网页数据;对于异步加载的网页,可以使用JavaScript库(如Puppeteer)模拟浏览器的异步请求,从而获取异步加载后的数据;对于验证码的网站,可以使用打码平台或自动识别技术(如OCR)来识别验证码。

  4. 调试和优化:进行调试和优化,确保爬虫程序能够稳定地运行,并且能够在反爬措施更新后及时进行适配。

    注意: JS逆向需要具备一定的JavaScript编程能力和代码分析能力,不同的网站可能有不同的反爬措施和实现方式,因此需要根据具体情况采用不同的技术和方法进行绕过。同时,在进行JS逆向时,需要遵守相关法规和道德规范,避免侵犯他人的合法权益。

3、逆向的环境搭建

3.1、安装node.js

下载网站:https://nodejs.org/en/download/
参考网站:https://blog.csdn.net/qq_41465646/article/details/107656044

3.2、安装js代码调试工具(vscode)

下载网站: https://code.visualstudio.com/download
参数网站:https://www.cnblogs.com/csji/p/13558221.html
运行js代码插件: https://www.jianshu.com/p/3c47770c118b

3.3、安装PyExecJs模块

PyExecJS用于实现在Python中运行JavaScript代码的功能,移植自RubyExecJS库。
安装命令:pip install PyExecJs -i https://pypi.douban.com/simple

4、JS常见加密算法

4.1、Base64算法

base64是一种用64个字符来表示任意二进制数据的方法。
base64使用 A–Z a–z 0–9 + / 这64个字符实现对数据的加密。

4.2、MD5算法

MD5是一种被广泛使用的线性散列算法,可以产出一个128位(16字节)的散列值(hash value),用于确保信息传输完整的一致性。且MD5加密之后产生的是一个固定长度(32位或16位)数据。

MD5参考网址: https://cdn.bootcdn.net/ajax/libs/blueimp-md5/1.0.1/js/md5.js

md5破解网址: https://cmd5.com/ 或者 https://md5.cn/
补充: 为了提高密码的安全性 一般会在密码后面加上一个随机数或者是时间戳 这个随机数或者是时间戳 我们一般称之为盐

4.3、DES/AES算法

DES对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者。
和信息的接收者在进行信息的传输与处理时,必须共同持有该密钥(称为对称密码),是一种对称加密算法。一般来说加密用的是encrypt()函数,解密用的是decrypt()函数。
AES/DES加密解密网址: https://www.sojson.com/encrypt.html

4.3.1 AESDES的区别
  • 加密后密文长度不同
    • DES加密后密文长度是8的整数倍
    • AES加密后密文的长度是16的整数倍
  • 安全度不同
    • 一般情况下DES足够安全
    • 如果要求高可以使用AES
  • DESAES切换只需要修改CryptoJS.DES =>CryptoJS.AES

4.4、RSA算法

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。有两把对应密钥,公钥和私钥。用公钥加密只能用私钥解开,用私钥加密只能用公钥解密。
RSA加密解密网址: https://oktools.net/rsa

  • 公开密钥(publickey:公钥)

  • 私有密钥(privatekey:私钥)

  • 公钥和私钥是一对

    注意: JS逆向中,并不是所有的都存在加密算法,有时候不需要去分析出是什么加密算法直接扣出代码即可

5、chrome常见调试技巧

  1. 断点调试:在需要调试的JavaScript代码行上设置断点,当代码执行到该执行时,会暂停执行,可以查看当前变量和调用栈等信息。可以通过点击行号来设置断点。
  2. 控制台调试:在控制台面板中可以执行JavaScript代码,可以查看和修改数量的值,以及调用函数和方法等。可以使用console.log()console.error()等方法来输出调试信息。

6、Base64编码详讲

1.Base64编码由来

为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。把不可打印的字符也能用可打印字符来表示,问题就解决了。Base64编码应运而生,Base64就是一种基于64个可打印字符来表示二进制数据的表示方法。

2.Base64编码原理分析参考

https://www.cnblogs.com/luguo3000/p/3940197.html

3.Base64在python中的应用

import base64
"""将字符串转换成base64编码"""
string = "https://www.baidu.com"
temp_b = string.encode("utf-8")  # 将字符串转换为二进制
print(temp_b)
content_b = base64.b64encode(temp_b)
print(content_b)
str_result = content_b.decode('utf-8')
print(str_result)"""将Base64编码还原为字符串"""
str_result = "aHR0cHM6Ly93d3cuYmFpZHUuY29t"
my_str = base64.b64decode(str_result).decode("utf-8")
print(my_str)"""处理base64编码的图片"""
import base64
src = "data:image/jpg;base64,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"
# 切割字符串,获取后面图片数据部分
image_data = src.split(',')[1]
# 解码-->二进制数据
image = base64.b64decode(image_data)
print(image)
with open('验证码.jpg','wb') as f:f.write(image)

7、MD5详讲

1.MD5加密是什么?

MD5是一种常用的消息摘要算法,它可以将任意长度的消息压缩成一个128位的哈希值。MD5算法广泛应用于数字签名、数据完整性校验、密码学等领域。
MD5(Message-Digest Algorithm 5)是一种常用的哈希算法,它将任意长度的消息压缩成一个128位的消息摘要(即哈希值),并且具有不可逆性、唯一性、抗碰撞性等特点。

2.MD5加密解密的原理?

MD5算法的原理是将输入的消息分成512位的数据块,每个数据块再分成16个32位的小块,然后通过一系列的位运算和非线性函数,对每个小块进行处理,最终得到一个128位的哈希值。由于MD5算法的设计,即使输入的消息只有微小的变化,也会导致输出的哈希值发生巨大的变化,因此可以用来验证数据的完整性和真实性。

3.MD5算法的用途

(1)数据完整性验证:通过比较两个文件的MD5值,可以判断它们是否相同,从而验证文件的完整性
(2)密码加密:将用户的密码进行MD5加密后,可以保证用户密码的安全性,即使数据库被攻击,攻击者也无法直接获取用户的密码
(3)数字签名:数字签名是一种保证数据完整性和真实性的技术,MD5算法可以用来生成数字签名
(4)安全访问控制:MD5算法可以用来生成安全访问控制的密钥,从而保证访问控制的安全性

相关文章:

十七:爬虫-JS逆向(上)

1、什么是JS、JS反爬是什么?JS逆向是什么? JS:JS全称JavaScript是互联网上最流行的脚本语言,这门语言可用于HTML 和 web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。JavaScript 是一种轻量级的编程语言。JavaScript 是…...

How to implement anti-crawler strategies to protect site data

How to implement anti-crawler strategies to protect site data 信息校验型反爬虫User-Agent反爬虫Cookie反爬虫签名验证反爬虫WebSocket握手验证反爬虫WebSocket消息校验反爬虫WebSocket Ping反爬虫 动态渲染反爬虫文本混淆反爬虫图片伪装反爬虫CSS偏移反爬虫SVG映射反爬虫字…...

王国维的人生三境界,这一生至少当一次傻瓜

一、人生三境界 古今之成大事业、大学问者,必经过三种之境界。“昨夜西风凋碧树,独上高楼,望尽天涯路。”此第一境也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境也。“众里寻他千百度,蓦然回首,那人却…...

Jmeter二次开发实操问题汇总(JDK问题,jar包问题)

前提 之前写过一篇文章:https://qa-lsq.blog.csdn.net/article/details/119782694 只是简单尝试了一下生成一个随机手机号码。 但是如果在工作中一个实际场景要用的二次开发,可能会遇到一些问题。 比如这样一个场景: Mobile或者前端调用部分…...

网络安全B模块(笔记详解)- 数字取证

数据分析数字取证-attack 1.使用Wireshark查看并分析Windows 7桌面下的attack.pcapng数据包文件,通过分析数据包attack.pcapng找出恶意用户的IP地址,并将恶意用户的IP地址作为Flag(形式:[IP地址])提交; 解析:http.request.method==POST ​ Flag:[172.16.1.102] 2.继续…...

阿里云服务器8080端口安全组开通图文教程

阿里云服务器8080端口开放在安全组中放行,Tomcat默认使用8080端口,8080端口也用于www代理服务,阿腾云atengyun.com以8080端口为例来详细说下阿里云服务器8080端口开启教程教程: 阿里云服务器8080端口开启教程 阿里云服务器8080端…...

vmlinux, vmlinux.bin, bzImage; cmake的find_package(Clang)新增了哪些变量( 比较两次记录的所有变量差异)

vmlinux, vmlinux.bin, bzImage cd /bal/linux-stable/ file vmlinux #vmlinux: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, BuildID[sha1]=b99bbd9dda1ec2751da246d4a7ae4e6fcf7d789b, not stripped #文件大小 20MB, 19940148Bfile ar…...

webpack配置入门

webpack是需要一定配置才能使用的,否则无任何效果。在开始webpack学习之前必须理解以下5个核心概念。 5大核心配置 1.entry(入口) webpack从那个文件开始打包,支持单文件入口(vue和react脚手架单入口)和多文件入口 2.output(输…...

Elasticsearch 8.X进阶搜索之“图搜图”实战

Elasticsearch 8.X “图搜图”实战 1、什么是图搜图? "图搜图"指的是通过图像搜索的一种方法,用户可以通过上传一张图片,搜索引擎会返回类似或者相关的图片结果。这种搜索方式不需要用户输入文字,而是通过比较图片的视…...

LLM之RAG实战(十三)| 利用MongoDB矢量搜索实现RAG高级检索

想象一下,你是一名侦探,身处庞大的信息世界,试图在堆积如山的数据中找到隐藏的一条重要线索,这就是检索增强生成(RAG)发挥作用的地方,它就像你在人工智能和语言模型世界中的可靠助手。但即使是最…...

UI动效设计师通往高薪之路,AE设计从基础到进阶教学

一、教程描述 UI动效设计,顾名思义即动态效果的设计,用户界面上所有运动的效果,也可以视其为界面设计与动态设计的交集,或者可以简单理解为UI设计中的动画效果,是UI设计中不可或缺的组成部分。现在UI设计的要求越来越…...

APK多渠道加固打包笔记之360加固宝

知识储备 首先需要知道V1,V2,V3签名的区别,可以参考之前的文章:AndroidV1,V2,V3签名原理详解 前言:一般开发者会指定使用自己创建的证书,如果没有指定,则会默认使用系统的证书,该默认的证书存储在C:\Users…...

编程天赋和努力哪个更重要?

编程天赋和努力在编程中都非常重要,但它们的侧重点不同。 编程天赋通常指的是与生俱来的、在逻辑思维、抽象思维、创造力等方面的能力,这些能力可以帮助程序员更快地理解问题、更高效地设计和实现解决方案。天赋的确可以帮助程序员更容易地入门和更快地掌…...

SpringCloud Alibaba之Nacos配置中心配置详解

目录 Nacos配置中心数据模型Nacos配置文件加载Nacos配置 Nacos配置中心数据模型 Nacos 数据模型 Key 由三元组唯一确定,三元组分别是Namespace、Group、DataId,Namespace默认是公共命名空间(public),分组默认是 DEFAUL…...

个人实际开发心得感悟及学习方法

前言 我的学习路线应该和大多数人的学习路线差不多,快速的学习完html和css,很多东西都没有记住的情况下就进入了js的学习,js学的懵懵懂懂就进入了node.js的基础学习和webpack的了解式学习,然后就跨度到了vue和react框架的学习。 节奏很快,学习的基础也极其不扎实。正如同那句…...

光速爱购--靠谱的SpringBoot项目

简介 这是一个靠谱的SpringBoot项目实战,名字叫光速爱购。从零开发项目,视频加文档,十天就能学会开发JavaWeb项目。 教程路线是:搭建环境> 安装软件> 创建项目> 添加依赖和配置> 通过表生成代码> 编写Java代码&g…...

P1019 [NOIP2000 提高组] 单词接龙

网址如下:P1019 [NOIP2000 提高组] 单词接龙 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 很怪,不知道该说什么 我试了题目给的第一个测试点的输入,发现输出和测试点的一样,但是还是WA 不是很懂为什么 有没有大佬帮我看一下…...

图解设计模式-中介者模式(Mediator)

中介者模式 定义 使用一个中介者对象(mediator)集中封装多个具有依赖/关联关系的对象(colleague,同事对象)之间的交互,使各对象之间不再互相引用,降低对象之间的强耦合程度,对象之…...

小程序面试问答(解决方案)

目录 问:uni-app 组件库的解决方案?(xx 分钟) 必答​ 加分​ 深入​ 再深入​ 参考链接​ 问:在 uni-app 中,如何进行全局状态管理?请介绍一下你对 Vuex 和 Pinia 的了解。​ 必答​ 加…...

qt第三天快速回顾

控件 listWidget 两种添加方式 1QListWidgetItem 2QStringList(链式编程) TreeWidget 核心代码 1设置头的标签 2.Item创建 添加顶层级别的Item 3.创建子Item 挂载到顶层的Item上 QLabelWidget 表格 增加了一个删除和添加 1.设…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

今日科技热点速览

🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...