爬虫案例1

通过get请求直接获取电影信息
目标页面: https://spa6.scrape.center/

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在network中可以看到是通过Ajax发送的请求,这个请求在postman中也可以直接请求成功,这只是一个用来练习爬虫的,没有达到js逆向的过程,需要通过分析js 代码来获取到token的值,

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
红色箭头返回的就是token
在这里插入图片描述
在这里插入图片描述

_0x31a891是一个list,在js中是array,使用join 方法 变成 '/api/movie,1709970141' , 第一个值是链接的路径是固定的,第二值是时间戳是整数的哦,在观察,是通过js中的哈希加密的,使用的方法是SHA1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

再次重组成array 时间戳用了两次,上一次是哈希加密的时候,第二次是在这里重组 [哈希加密值,时间戳]

最后 base64加密 [哈希加密值,时间戳][‘join].(’,')
在这里插入图片描述


import hashlib
import requests
import base64
import time
from urllib.parse import urlsplit, urlencodebase_url = 'https://spa6.scrape.center/api/movie?'
timStr = str(int(time.time()))
url_path = urlsplit(base_url).path # 获取base-url 路径def get_token():s1 = ','.join([url_path, timStr]) # [路径, 时间戳]s2 = hashlib.sha1(s1.encode()).hexdigest() # 哈希加密后获取字符串结果s3 = ','.join([s2, timStr]) # 哈希加密结果和时间戳s4 = base64.b64encode(s3.encode('utf-8')).decode('utf-8') # base64加密后获取字符串return s4params = {'limit': 10,'offset': 0,'token': get_token()
}url = base_url + urlencode(params)
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
}resp = requests.get(url=url, headers=headers)
print(resp.status_code)
print(resp.json())

在这里插入图片描述

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

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

相关文章

Excel判断CD两列在EF两列的列表中是否存在

需求 需要将CD两列的ID和NAME组合起来,查询EF两列的ID和NAME组合起来的列表中是否存在? 比如,判断第二行的“123456ABC”在EF的第二行到第四行中是否存在,若存在则显示Y,不存在则显示N 实现的计算公式 IF(ISNUMBER…

淘宝基于Nginx二次开发的Tengine服务器

最近在群里看到这样一张阿里云网关报错的截图,我保存下来看了下 看到下面有 Tengine提供技术支持,这个Tengine是什么东西呢?我搜索了下似乎是淘宝在nginx的基础上自己改的Web服务器 Tengine还支持OpenResty框架,该框架是基于Ngin…

SAR ADC学习笔记(5)

高精度比较器 一、基于开环运放的比较器 OP开环应用时不需要考虑频率特性(相位裕度那些) ,不存在稳定性问题。 单级运放的时域响应 多级运放 二、Latch比较器 Latch比较器的速度 Latch比较器的噪声优化 三、高速高精度比较器 消除失调电压OFFSET OOS IOS

nRF52832——唯一 ID 与加密解密

nRF52832——唯一 ID 与加密解密 唯一 ID 概念唯一 ID 作用读取唯一 ID 唯一 ID 用于加密TEA 加密算法唯一 ID 的加密和解密 唯一 ID 概念 唯一 ID 作用 nRF52xx 微控制器提供一组 64 位的唯一 ID 号,这个唯一身份标识所提供的 ID 值对任意一个 nRF52xx 微控制器&…

展会邀约 | 加速科技将携重磅产品亮相SEMICON China 2024

SEMICON China 2024将于3月20日-3月22日在上海新国际博览中心隆重举行。展会期间,加速科技将携重磅产品高性能数模混合信号测试机ST2500EX、LCD Driver测试机Flex10K-L、高密度数模混合信号测试系统ST2500E、高性能数模混合信号测试系统ST2500A亮相此次行业盛会&…

WEB区块链开发组件 - KLineChart

当我们开发区块链的时候,实现K线可能大家会想到EChart,但是EChart做可能需要耗费大量工作量,实现出来的功能估计也是牵强着用。 这时候,我们可能网上会搜索到TradingView,可是这个组件虽然功能非常强大,但是还是要费事…

HDFS面试重点

文章目录 1. HDFS的架构2. HDFS的读写流程3.HDFS中,文件为什么以block块的方式存储? 1. HDFS的架构 HDFS的架构可以分为以下几个主要组件: NameNode(名称节点): NameNode是HDFS的关键组件之一,…

Android7.1 ANR error 弹窗处理

Android7.1 ANR error 弹窗处理 问题描述解决方法 郑重声明:本人原创博文,都是实战,均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Rockchip OS:Android 7.1.2 Kernel: 3.10 问题描述 有时会用到第三方apk,内置到系统中&…

全国车辆识别代码信息API查询接口-VIN深度解析

我们先来介绍下什么是vin码,以及vin码的构成结构解析,汽车VIN码,也叫车辆识别号码,通俗可以理解为汽车的身份证号码。 VIN码一共分四大部分: 1~3位,是世界制造厂识别代号(WMI)&…

DevOps本地搭建笔记(个人开发适用)

需求和背景 win11 wsl2 armbian(玩客云矿渣),构建个人cicd流水线,提高迭代效率。 具体步骤 基础设施准备 硬件准备:一台笔记本,用于开发和构建部署,一台服务器,用于日常服务运行。 笔记本…

Rust 并行库 crossbeam 的 Channel 示例

示例1 一个不完整的示例&#xff1a; let (tx, rx) channel::unbounded::<Task>(); let mut handlers vec![];for _ in 0..number {let rx rx.clone();let handle thread::spawn(move || {while let Some(task) rx.recv() {task.call_box();}});handlers.push(han…

Mysql数据库的优点

功能强大 MySQL中提供了多种数据库存储引擎,各引擎各有所长,适用于不同的应用场合,用户可以选择最合适的引擎以得到最高性能,可以处理每天访问量超过数亿的高强度的搜索 Web 站点。MySQL5 支持事务、视图、存储过程、触发器等。 支持跨平台 MySQL支持至少20种以上的开发…

如何批量注册无数个电子邮箱

需求 最近我们需要批量注册无数个steam账号来做一些不可描述的事情&#xff0c;那么我们就需要先批量注册无数个电子邮箱Email 而且我们希望注册和接收邮件是可以通过脚本自动化的&#xff0c;最好是通过正常的API接口 什么叫正常的API接口&#xff1f;正常的API接口是指邮件…

MongoDB聚合运算符:$derivative

$derivative聚合运算符返回返回指定窗口内的平均变化率&#xff08;即求导&#xff09;&#xff0c;变化率使用以下公式计算&#xff1a; $setWindowFields阶段窗口中的第一个和最后一个文件。分子&#xff0c;等于最后一个文档的表达式的值减去第一个文档表达式的值。分母&am…

Antd中s-table组件某字段进行排序

Antd中s-table组件某字段进行排序 提前说明&#xff0c;s-table组件包含分页等功能 <s-tableref"table":columns"columns":data"loadData"bordered:row-key"(record) > record.id"></s-table>而其中loadData为获取表数…

ref和reactive的区别?

Ref 和 Reactive 是两种不同的编程概念&#xff0c;通常在响应式编程中经常提到。 Ref&#xff08;引用&#xff09;是指对某个数据的引用或者指针&#xff0c;类似于指向某个内存地址的指针。在编程中&#xff0c;我们可以通过引用来访问、修改特定的数据。Ref 通常用于管理和…

线性表的顺序存储实验

附 录 #include<stdio.h> #include<stdlib.h>typedef struct {double* data;int length; }Sqlist;void initSqlist(Sqlist* L, int n) {L->data (double*)malloc(n * sizeof(double)); if (L->data NULL){printf("内存分配失败\n");exit(1);}pri…

react实现表格多条件搜索

创建一个React组件来渲染表格及搜索功能。可以使用函数式组件或者类组件。 在组件的状态中定义搜索条件的值。可以使用useState钩子函数来定义和更新搜索条件的状态。 在组件中创建一个表单&#xff0c;包含多个输入框或下拉列表等用于输入搜索条件的表单元素。 为每个表单元…

boost 压缩与解压缩流

boost 压缩与解压缩流&#xff08;zip、zip2、gzip、lzma、zstd压缩方式&#xff09; #include <boost/iostreams/filtering_stream.hpp> #include <boost/iostreams/filter/zlib.hpp> #include <boost/iostreams/filter/bzip2.hpp> #include <boost/ios…

MTK安卓开发板_联发科开发板评估套件_安卓主板硬件开发

在介绍开发板之前&#xff0c;让我们先来区分一下核心板和开发板的区别。核心板是一种集成度高、功能完整的计算模块&#xff0c;搭载系统&#xff0c;简化了外围接口&#xff0c;体积尺寸相对较小&#xff0c;主要适用于嵌入式系统。而开发板由核心板底板组成&#xff0c;提供…