爬虫 — Js 逆向
目录
- 一、概念
- 1、爬虫
- 2、反爬虫
- 3、加密解密
- 4、加密
- 5、步骤
- 二、常用加密方式
- 1、加密方式
- 2、常见加密算法
- 3、JS 中常见的算法
- 4、MD5 算法
- 4.1、MD5 加密网站
- 4.2、特点
- 5、DES/AES 算法
- 6、RSA 算法
- 7、base64 算法
- 三、环境配置
- 1、node.js 环境配置
- 2、PyCharm 环境配置
一、概念
1、爬虫
使用任何技术手段,批量获取网站信息的一种方式。
2、反爬虫
使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。
3、加密解密
一个信息干扰的过程,保证固定的人可以看到信息,把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。
4、加密
对原来为明文的数据按照某种算法进行处理,变成不认识的加密数据。
5、步骤
在浏览器加密,找到加密方式,模拟加密方式,进行加密,将加密的数据放到字典,携带参数,正常发送 post 请求。
二、常用加密方式
1、加密方式
数据加密方式 | 描述 | 主要解决的问题 | 常用算法 |
---|---|---|---|
对称加密 | 指数据加密和解密使用相同的秘钥 | 数据的机密性 | DES,AES |
非对称加密 | 也叫公钥加密,指数据加密和解密使用不同的秘钥——密钥对 | 身份验证 | DSA,RSA |
单向加密 | 指只能加密数据,而不能解密数据 | 数据的完整性 | MD5,SHA 系列算法 |
2、常见加密算法
- MD5(Message Digest Algorithm 5)
- DES(Data Encryption Standard)
- AES(Advanced Encryption Standard)
- RSA(Rivest-Shamir-Adleman)
3、JS 中常见的算法
- 线性散列 MD5 算法
- 对称加密 DES/AES 算法
- 非对称加密算法 RSA
- base64 加密算法
4、MD5 算法
MD5 是一种被广泛使用的线性散列算法,可以产出一个128位(16字节)的散列值(hash value),用于确保信息传输完整的一致性。
MD5 加密之后产生的是一个固定长度(32位或16位)的数据,密文不能推算出明文,不可逆。
4.1、MD5 加密网站
https://www.cmd5.com/
https://cdn.bootcdn.net/ajax/libs/blueimp-md5/1.0.1/js/md5.js
4.2、特点
数据多长,长度都是都是固定的(32位或16位)。
加密的数据不是随机,因为使用的相同的算法对相同的数据进行处理,所以结果都是相同的。
无法从加密的数据还原到以前的密文。
5、DES/AES 算法
对称加密,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的秘钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该秘钥(称为对称密码),是一种对称加密算法。
数据发送方将明文以及密钥一起经过特殊加密算法成为密文之后,将它发送出去。接收方收到密文之后,需要使用加密用到的相同密钥以及相同的算法进行密文解密。
加密方与解密方拥有相同的密码本。
DES 和 AES 的区别
-
加密后密文长度不同
DES 加密后密文长度是8的整数倍
AES 加密后密文长度是16的整数倍
-
安全度不同
一般情况下 DES 足够安全
如果要求高可以使用 AES
-
DES 和 AES 切换只需要修改 CryptoJS.DES =>CryptoJS.AES
js 语法
加密:encrypt()
解密:decrypt()
特点
加密和解密都是使用相同密钥加密算法,也称为单密钥加密,公开的。
缺点
使用的都是同一把密钥,一方密钥泄露,传输的数据就存在安全风险。
其它对称加密算法
3DES(Triple Data Encryption Standard),TDEA(Triple Data Encryption Algorithm),RC2(Rivest Cipher 2),RC4(Rivest Cipher 4)
6、RSA 算法
一种非对称加密算法,在公开密钥加密和电子商业中被广泛使用。
非对称加密需要2个密钥
公开密钥(publickey):公钥,加密的,公开的
私有密钥(privatekey):私钥,解密处理,私有的
公钥和私钥是一对
js语法
setPublickey:设置公钥
其它非对称加密算法
RAS(Rivest-Shamir-Adleman),DSA(Digital Signature Algorithm),ECC(Elliptic Curve Cryptography)
7、base64 算法
伪加密算法,经过它处理的数据非常像密文数据,不是严格意义上的密文,实际上就是一种编码。
base64 是一种使用 A—Z,a—z,0—9,+,/ 这64个字符来表示任意二进制数据的方法。
实现算法的第三方工具
PyCryptodome
安装方式
pip install pycryptodome
三、环境配置
1、node.js 环境配置
node.js 下载官网
安装步骤
1、点击 Next;
2、选中勾选框后,点击 Next;
3、选中安装路径后,点击 Next;
4、点击 Next;
5、点击 Next;
6、点击 Install;
7、点击 Finish;
8、安装完成。
9、验证安装。
按 win + R,输入 cmd 后,按回车。
在终端窗口输入以下命令:
node -v 显示安装的 node.js 版本
npm -v 显示安装的 npm 版本
2、PyCharm 环境配置
需要使用 PyCharm 专业版的,才能执行 js 代码。
点击进入 PyCharm 官网下载
1、按电脑系统选择对应的专业版安装包;
2、下载好安装包后,点击安装,点击 Next;
3、更换安装路径后,点击 Next;
4、选中选择框后,点击 Next;
5、点击 Install;
6、点击 Finish;
7、重启电脑;
8、下载激活码文件后,将文件放在 PyCharm 安装目录下,并解压好;
点击下载激活码文件
9、在解压后的文件夹里找到 scripts 文件夹,打开后,找到 install-current-user.vbs 文件,双击打开,
点击 “OK” 或者 “确定”,然后等 "Done"弹出,3分钟内未弹出请重新执行 vbs;
10、双击打开 PyCharm 软件,选中"Activate PyCharm"和"Activation Code";
11、在解压后的激活码文件里找到 code 文件夹后,找到 PyCharm.txt 文件,并打开,复制里面的代码;
12、将复制后的代码粘贴到"Activation Code"里后,点击 Activation;
13、点击 Continue;
14、点击 Plugins 安装插件,搜索 nodejs,点击 Install 安装后,重启 PyCharm;
15、创建 js 文件;
16、编写 js 代码后,运行测试一下,在控制台打印出数据即为成功;
// 定义函数
function d1(){// 打印数据console.log('hello world')
}
// 调用函数
d1()
17、模拟 js 构造出的密文数据;
// 定义函数
function d1(e, el){// 返回的数据return {'a':e, 'b': el}
}
// js 已经构造出密文数据,给到 python 文件当中的代码
console.log(d1('hello'))
18、Python 代码调用调试好的 js 代码。
# 安装方法:pip install PyExecJs -i https://pypi.tuna.tsinghua.edu.cn/simple
import execjs # 用于执行 JavaScript 代码的库# 定义函数
def get_js(js_path, fuc_name, *func_args):''':param js_path: js代码的文件路径:param fuc_name: 调用的js函数名称:param func_args: 传入的参数:return:'''# 1. 读取 js 代码with open(js_path, 'r', encoding='utf-8') as f:js_code = f.read()# 2. 编译 js 代码cjs = execjs.compile(js_code)# 3. 执行 js 代码,函数后面跟上一个参数print(cjs.call(fuc_name, func_args))# 调用函数
get_js('demo.js', 'd1', 'hello', 'world')
记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~
相关文章:

爬虫 — Js 逆向
目录 一、概念1、爬虫2、反爬虫3、加密解密4、加密5、步骤 二、常用加密方式1、加密方式2、常见加密算法3、JS 中常见的算法4、MD5 算法4.1、MD5 加密网站4.2、特点 5、DES/AES 算法6、RSA 算法7、base64 算法 三、环境配置1、node.js 环境配置2、PyCharm 环境配置 一、概念 1…...

Python 网络爬取的时候使用那种框架
尽管现代的网站多采取前后端分离的方式进行开发了,但是对直接 API 的调用我们通常会有 token 的限制和可以调用频率的限制。 因此,在一些特定的网站上,我们可能还是需要使用网络爬虫的方式获得已经返回的 JSON 数据结构,甚至是处理…...

CentOS7安装源设置
此处的安装源地址需要填写:(适用于centos7) http://mirrors.aliyun.com/centos/7/os/x86_64/...
pool = multiprocessing.Pool()报错:module object has no attribute Pool
pool multiprocessing.Pool()报错:module object has no attribute Pool,为什么? 我很抱歉,前面提供的回答是错误的。在Python的multiprocessing模块中,确实有一个名为Pool的类。如果你在使用multiprocessing.Pool()…...

Linux Shell 实现一键部署podman
podman 介绍 使用 Podman 管理容器、Pod 和映像。从本地环境中无缝使用容器和 Kubernetes,Podman 提供与 Docker 非常相似的功能,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。 Podman 可以管理和运行…...

Biome-BGC生态系统模型与Python融合技术
Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数,模拟日尺度碳、水和氮通量的有效模型,其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中,对于碳的生物量积累,采用光合酶促反应机理模型计算出每天…...
Matlab图像处理-区域描述
一旦一幅图像的目标区域被确定,我们往往用一套描述子来表示其特性。选择区域描述子的动机不单纯为了减少在区域中原始数据的数量,而且也应有利于区别带有不同特性的区域。因此,当目标区域有大小、旋转、平移等方面的变化时,针对这…...

openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据
文章目录 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 openGauss学习笔记-69 openGauss 数据库管理-创建和管理普通表-更新表中数据 修改已经存储在数据库中数据的行为叫做更新。用户可以更新单独一行、所有行或者指定的部分行。还可以独立更新…...
Flink RowData 与 Row 相互转化工具类
RowData与Row区别 (0)都代表了一条记录。都可以设置RowKind,和列数量Aritry。 (1)RowData 属于Table API,而Row属于Stream API (2)RowData 属于Table内部接口,对用户不友…...

企业架构LNMP学习笔记48
数据结构类型操作: 数据结构:存储数据的方式 数据类型 算法:取数据的方式,代码就把数据进行组合,计算、存储、取出。 排序算法:冒泡排序、堆排序 二分。 key: key的命名规则不同于一般语言…...
docker部署neo4j
拉取镜像 docker pull neo4j:3.5.35-community查看镜像 [rootlocalhost data]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE neo4j 3.5.35-community 3548ff943256 13 months ago 446MB创建容器并运行 docker run -d …...

融云观察:AI Agent 是不是游戏赛道的下一个「赛点」?
本周四 融云直播间,点击报名~ ChatGPT 的出现,不仅让会话成为了未来商业的基本形态,也把大家谈论 AI 的语境从科技产业转向了 AI 与全产业的整合。 关注【融云全球互联网通信云】了解更多 而目前最热衷于拥抱生成式 AI 的行业中,…...

运用谷歌浏览器的开发者工具,模拟搜索引擎蜘蛛抓取网页
第一步:按压键盘上的F12键打开开发这工具,并点击右上角三个小黑点 第二步:选择More tools 第三步:选择Network conditions 第四步:找到User agent一列,取消复选框的勾选 第五步:选择谷歌爬虫…...
uni-app 点击蒙版层时关闭自定义弹窗
click.stop:用于阻止冒泡 click.stop 标签范围内,点击任何区域(包括 click 点击事件)都不会关闭弹窗。标签范围外会关闭弹窗 click.stop 标签内的 click 等事件:如果事件内有关闭弹窗的代码可关闭弹窗 在 template 中 <view class&quo…...

【红包雨功能的】环境部署(弹性伸缩、负载均衡、Redis读写分离、云服务器部署)
文章目录 创建环境创建专用网络VPC安全组创建云服务器打包部署2. Java环境启动项目开机启动任意服务1. 制作服务文件2. 制作启动脚本3. 制作停止脚本4. 增加执行权限5. 设置开机启动 创建镜像继续创建多台云服务器负载均衡弹性伸缩redis的报警规则白名单1. LAMP 环境1. 安装Apa…...
基于Java的设计模式-策略模式
策略模式就是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 基本概念 策略模式主要是解决多种算法相似的情况下,使用if...else所带来的复杂和难以维护。当存在系统中有多个类,但是区分它们的是只是它们的直接行为,那我们…...

小程序多种姿势更换文章
概述 简单的文章切换demo,通过倒计时、摇一摇、双击进行文章切换 详细 直接看效果图吧!比较简单,主要是练习一下... 小程序不带双击事件,可以记录第一次单击事件和第二次单机事件进行双击操作。 1、摇一摇是通过调用官方的 …...

读书笔记-《ON JAVA 中文版》-摘要25[第二十二章 枚举]
文章目录 第二十二章 枚举1. 基本功能1.1 基本 enum 特性 2. 方法添加2.1 方法添加2.2 覆盖 enum 的方法 3 switch 语句中的 enum4. values 方法的神秘之处5. 实现而非继承6. 随机选择7. 使用接口组织枚举8. 使用 EnumSet 替代 Flags9. 使用 EnumMap10. 常量特定方法11. 本章小…...
DNDC模型建模方法及应用
DNDC(Denitrification-Decomposition,反硝化-分解模型)是目前国际上最为成功的模拟生物地球化学循环的模型之一,自开发以来,经过不断完善和改进,从模拟简单的农田生态系统发展成为可以模拟几乎所有陆地生态…...

Kafka为什么是高性能高并发高可用架构
目录 1 前言2 顺序写入3 页缓存4 零拷贝5 Broker 性能6 流数据并行7 总结 1 前言 我们都知道 Kafka 是基于磁盘进行存储的,但 Kafka 官方又称其具有高性能、高吞吐、低延时的特点,其吞吐量动辄几十上百万。小伙伴们是不是有点困惑了,一般认为…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析
这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Ubuntu Cursor升级成v1.0
0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开,快捷键也不好用,当看到 Cursor 升级后,还是蛮高兴的 1. 下载 Cursor 下载地址:https://www.cursor.com/cn/downloads 点击下载 Linux (x64) ,…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...