爬虫案例1

news/2024/12/2 10:21:04/
通过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.ppmy.cn/news/1381053.html

相关文章

ubuntu20.04 创建ros环境、创建rospackage

roswiki教程:https://wiki.ros.org/cn/ROS/Tutorials 环境准备 安装ros环境 这里选择noetic版本的ros,安装步骤参考:https://zhuanlan.zhihu.com/p/662284005 创建工作空间 这里我在用户目录下创建catkin的工作目录catkin_ws &#xff0…

python 生成器回顾

python生成器(generator) 生成器是一种使用普通函数语法定义的迭代器包含yield语句的函数都是生成器,它是一个不断产生值的函数生成器每次使用yield产生一个值后,函数都将冻结,即在此处停止执行,等待重新被…

有来团队后台项目-解析5

一、 husky 安装 pnpm install -D husky生成husky 配置文件 如果文件中有.git文件,那么直接执行 npx husky-init如果没有,那么先执行git init 结果: PS F:\company_project\demo\youlahoutaijiexi\vite-project> git init Initializ…

GIS瓦片3-WMTS瓦片

介绍 WMTS( Web Map Tile Service)切片地图Web服务(OpenGIS Web Map Tile Service)当前最新版本是1.0.0。WMTS标准定义了一些操作,这些操作允许用户访问切片地图。WMTS可能是OGC首个支持RESTful访问的服务标准。 WMTS提供了一种采用预定义图…

Oracle数据库物理结构

Oracle数据库的物理结构是指数据库在磁盘上的存储组织方式,包括数据文件、控制文件和日志文件等。理解和管理Oracle数据库的物理结构对于数据库管理员来说至关重要,因为它直接影响到数据库的性能、可用性和可靠性。在本文中,我将详细介绍Orac…

命名空间多线程计时(C++基础)

命名空间 不要在头文件内使用using namespace,一定要确保实在一个足够小的作用域下使用,在哪个范围内,比如函数、if语句等,但一定不要在头文件中使用!!! 上述示例中,会调用orange中…

iOS 17.4报错: libopencore-amrnb.a[arm64]

iOS 17.4报错: libopencore-amrnb.a[arm64] iOS 17.4 模拟器运行报错解决方案 iOS 17.4 模拟器运行报错 Building for ‘iOS-simulator’, but linking in object file (/XXX/lib/libopencore-amrnb.a[arm64]2) built for ‘iOS’ 解决方案 在Podfile里添加如下设…

【Golang星辰图】 编织自动化魔法:使用 Go 语言中的自动化和部署工具构建可靠的基础设施

Go 语言中的自动化和部署:使用 Ansible、Docker、Kubernetes、Terraform、Jenkins、GitLab 和 Vault 的详细指南 前言: 自动化和部署是当今软件开发生命周期中不可或缺的环节。使用自动化工具可以提高效率、降低成本、减少人为错误,并使软件…