爬虫 — Js 逆向

news2024/11/25 9:24:56

目录

  • 一、概念
    • 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')

记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1024159.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI视野·今日NLP 自然语言处理论文速览 第三十六期】Tue, 19 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 19 Sep 2023 (showing first 100 of 106 entries) Totally 106 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Speaker attribution in German parliamentary debates with QLoRA-ada…

xp 系统 安装 python 2.7 ide pip

1 下载python http://www.python.org/ftp/python/ python-2.7.2.msi 安装完需要设置环境变量 2 下载 setuptools setuptools-0.6c11.win32-py2.7.exe https://pypi.tuna.tsinghua.edu.cn/simple/setuptools/ 3 下载 pip ,python 2.7 最高支持 pip 20.3.4 https:…

安全远程访问工具

什么是安全远程访问 安全远程访问是指一种 IT 安全策略,允许对企业网络、任务关键型系统或任何机密数据进行授权、受控访问。它使 IT 团队能够根据员工和第三方的角色和工作职责为其提供不同级别的访问权限,安全的远程访问方法可保护系统和应用程序&…

C语言指针讲解-------进阶篇(下篇)

目录 六.函数指针数组 七.指向函数指针数组的指针 八.回调函数 冒泡排序 与 qsort 函数 冒泡排序 qsort函数 六.函数指针数组 函数指针数组---数组存放的是函数 ---指针存放的是函数的地址 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int Add(int x, in…

TuyaLink 快速入门教程

通过本入门教程&#xff0c;大家能了解到如何在涂鸦 IoT 开发平台上使用 TuyaLink 完成智能设备接入。并通过 Java 程序&#xff0c;在 IntelliJ IDEA 中使用 TuyaLink 的 GitHub Demo 工程&#xff0c;对一个电工开关设备&#xff0c;实现基本的数据上报下发功能。 准备工作 …

分类预测 | Matlab实现GA-RF遗传算法优化随机森林多输入分类预测

分类预测 | Matlab实现GA-RF遗传算法优化随机森林多输入分类预测 目录 分类预测 | Matlab实现GA-RF遗传算法优化随机森林多输入分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现GA-RF遗传算法优化随机森林多输入分类预测&#xff08;完整源码和数据&…

细说GNSS模拟器的RTK功能(四)应用实例02

在之前的文章中&#xff0c;我们详细介绍了什么是RTK&#xff0c;并且用一个基于RTCM插件的RTK使用实例&#xff0c;来模拟RTCM的使用&#xff0c;本期文章我们将通过另一种方式——基于多实例&#xff0c;来模拟两个同步的射频信号。 基于多实例 硬件设置 首先&#xff0c;需…

elasticsearch bulk 批量操作

1&#xff1a;bulk 是 elasticsearch 提供的一种批量增删改的操作API bulk 对 JSON串 有着严格的要求。每个JSON串 不能换行 &#xff0c;只能放在同一行&#xff0c;同时&#xff0c; 相邻的JSON串之间必须要有换行 &#xff08;Linux下是\n&#xff1b;Window下是\r\n&#…

zaabix实现对nginx监控

本文使用监控模板net.tcp.listen[port]实现监听端口 实验环境&#xff1a; 首先搭建好zabbix-server &#xff0c;zabbix-agenthttps://mp.csdn.net/mp_blog/creation/editor/132622769?spm1001.2014.3001.9457 而后在zabbix-agent主机上下载一个nginx 登录zabbix网站创建主…

JavaWeb开发-06-SpringBootWeb-MySQL

一.MySQL概述 1.安装、配置 官网下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 2.数据模型 3.SQL简介 二.数据库设计-DDL 1.数据库 官网&#xff1a;http:// https://www.jetbrains.com/zh-cn/datagrip/ 2.表&#xff08;创建、查询、修改、删除&#xff09; #…

vscode 插件配置推荐

VSCode汉化包插件 &#xff1a;Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code VSCode汉化包&#xff0c;原始默认是英文的所以我们需要下一个中文插件。 VSCode自动补全标签 &#xff1a;Auto Close Tag Auto Close Tag 对Html或Xml文件自动创建结…

【小程序】实现经典2048小游戏

概述 经典小游戏2048&#xff0c;2048小游戏对于逻辑要求还是很有技术含量的&#xff0c;有兴趣的可以看看 详细 以前学习时写的小游戏2048&#xff0c;技术含量还是不错的&#xff0c;有兴趣的可以看看 2048已经封装好了&#xff0c;在主页面直接引入文件可以直接调用 演…

SQLite 学习笔记2 - 常用命令和示例

———————————————— 版权声明&#xff1a;本文为CSDN博主「网易智企」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明。 原文链接&#xff1a;https://blog.csdn.net/netease_im/article/details/123741168 ————…

基于SpringBoot+Vue的健身房管理系统设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

ASEMI代理瑞萨R7S721021VCFP#AA0芯片介绍

编辑-Z 型号&#xff1a;R7S721021VCFP#AA0 特性&#xff1a; 指令缓存大小&#xff1a;32 KB 数据缓存大小*2:32 KB TLB条目&#xff1a;128个条目 Jazelle架构扩展&#xff1a;完整 采用NEON技术的媒体处理引擎&#xff1a;包括在内 FPU&#xff1a;包括 PTM接口&am…

gpt扣款失败,openai扣款失败无法使用-如何解决gpt扣款失败的问题?

gpt扣款失败&#xff0c;openai扣款失败无法使用。毕竟你花了钱却无法使用你所期待的服务&#xff0c;这种情况确实令人不快。但是&#xff0c; 为什么gpt扣款失败&#xff1f; 可能是由于支付问题导致的扣款失败。这包括信用卡额度不足、支付信息错误等等。如果你的支付信息…

RocketMQ高性能核心原理与源码架构剖析(上)

这⼀部分主要是理解 RocketMQ ⼀些重要的⾼性能核⼼设计。我们知道&#xff0c;在 MQ 这个领域&#xff0c; RocketMQ 实际上是属于⼀个后起之秀。RocketMQ 除了能够⽀撑 MQ 的业务功能之外&#xff0c;还有更重要的⼀部分就是对于⾼吞吐、⾼性能、⾼可⽤的三⾼架构设计。这些设…

【Stm32】【Lin通信协议】Lin通信点亮灯实验

Lin通信点亮灯实验 通过STM32的串口发送数据&#xff0c;然后通过串口转换模块将数据转换成LIN&#xff08;Local Interconnect Network&#xff09;协议&#xff0c;最终控制点亮灯。需要工程和入门资料的可以私信我&#xff0c;看到了马上回。 入门书本推荐&#xff1a; 一…

spring boot 3 + spring cloud sleuth 无法注入Tracer问题

1.背景&#xff1a; 由于升级springboot版本到3.1.0后&#xff0c;导致原先的plumelog的traceId获取方式失败。 Autowiredprivate Tracer tracer; 项目启动报错&#xff0c;无法找到tracer bean实例。 2.解决&#xff1a; 前往spring cloud sleuth官网&#xff0c;发现此项…

Python入门自学进阶-Web框架——41、初步了解Celery 分布式队列、识堡垒机、自动发布、配置管理系统

Celery是一个基于Python开发的分布式异步消息任务队列&#xff0c;可以轻松的实现任务的异步处理 实例场景: 对100台机器执行一条批量命令&#xff0c;可能会花很长时间 &#xff0c;但不想让你的程序等着结果返回&#xff0c;而是给你返回 一个任务ID,经过一段时间只需要拿着…