爬虫学习:毛毛组案例

2024-04-22 08:12
文章标签 学习 爬虫 案例 毛毛

本文主要是介绍爬虫学习:毛毛组案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pip install

  • pip install requests
  • pip install base64
  • pip install pycrytodome

URL

目标网站:https://www.maomaozu.com/#/build
工具网站:https://curlconverter.com/ 简便请求发送信息,使用方法不做过多说明
我使用 cURL (bash)

import requests
import base64
import json
import time
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
# 目标网站:https://www.maomaozu.com/#/buildcookies = {'PHPSESSID': 'up6gke39b9s01slbsio4fqj9en','Hm_lvt_6cd598ca665714ffcd8aca3aafc5e0dc': '1713688780','Hm_lpvt_6cd598ca665714ffcd8aca3aafc5e0dc': '1713689090','SECKEY_ABVK': '5kQXirwIrjHWtO1RWF8YhXpwJvuVbZjj3OIK3M8kzGw%3D','BMAP_SECKEY': 'jCbK4eShwM10v4L40RjDhvps7WmJvpqniC9qByzukM7Is2MnYn8yaE5PF_eFjSR8pcAnvaN1BGQGURFfyo0ENeRtnz_sJx1dJhRhzlxORuxDtFIjYKzdI288lJTjkfIFmbZNz8Pk4KBTj2BVK1AX-bBtqdT_eFiwysUElAgn7Ol3AQ9_Jkm9YoKeIyutC68xtI2fiWU8rbvDBQRDMs9NxA',
}headers = {'Accept': '*/*','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6','Connection': 'keep-alive','Content-Type': 'application/json; charset=UTF-8',# 'Cookie': 'PHPSESSID=up6gke39b9s01slbsio4fqj9en; Hm_lvt_6cd598ca665714ffcd8aca3aafc5e0dc=1713688780; Hm_lpvt_6cd598ca665714ffcd8aca3aafc5e0dc=1713689090; SECKEY_ABVK=5kQXirwIrjHWtO1RWF8YhXpwJvuVbZjj3OIK3M8kzGw%3D; BMAP_SECKEY=jCbK4eShwM10v4L40RjDhvps7WmJvpqniC9qByzukM7Is2MnYn8yaE5PF_eFjSR8pcAnvaN1BGQGURFfyo0ENeRtnz_sJx1dJhRhzlxORuxDtFIjYKzdI288lJTjkfIFmbZNz8Pk4KBTj2BVK1AX-bBtqdT_eFiwysUElAgn7Ol3AQ9_Jkm9YoKeIyutC68xtI2fiWU8rbvDBQRDMs9NxA','Origin': 'https://www.maomaozu.com','Referer': 'https://www.maomaozu.com/','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0','sec-ch-ua': '"Microsoft Edge";v="125", "Chromium";v="125", "Not.A/Brand";v="24"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"',
}timeStamp = int(time.time() * 1000) # 时间戳
for page in range(1,10):# 1.请求体加密data = {"Type":0,"page":page,"expire":timeStamp}data = json.dumps(data).encode() # 转为json字符串并编码为bytes# AES encryptionkey = '55b3b62613aef1a0'.encode()  iv = '55b3b62613aef1a0'.encode()  aes = AES.new(key, AES.MODE_CBC, iv) # (1) 填充数据 满足AES加密格式data = pad(data, AES.block_size)# (2) 加密数据data = aes.encrypt(data)# (3) 对加密数据 base64 编码data = base64.b64encode(data).decode()# ========== 发送请求 ===========response = requests.post('https://www.maomaozu.com/index/build.json', cookies=cookies, headers=headers, data=data)# 2.响应数据解密data = response.text# (1) 对响应数据 base64 解码data = base64.b64decode(data)# AES decryptionkey = '0a1fea31626b3b55'.encode()iv = '0a1fea31626b3b55'.encode()aes = AES.new(key, AES.MODE_CBC, iv)# (2) 解密数据data = aes.decrypt(data)# (3) 去除填充 满足AES解密格式data = unpad(data, AES.block_size).decode()time.sleep(1)print(data)

学习前提

  • python基础
  • requests模块
  • js基础的了解
  • base64编码,了解一下原理
  • AES算法,会用代码也可以,原理了解一下

还有很多知识,不做补充

这篇关于爬虫学习:毛毛组案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/925249

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固 通俗易懂版)

《MySQL中实现多表查询的操作方法(配sql+实操图+案例巩固通俗易懂版)》本文主要讲解了MySQL中的多表查询,包括子查询、笛卡尔积、自连接、多表查询的实现方法以及多列子查询等,通过实际例子和操... 目录复合查询1. 回顾查询基本操作group by 分组having1. 显示部门号为10的部门名,员

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

SpringBoot实现动态插拔的AOP的完整案例

《SpringBoot实现动态插拔的AOP的完整案例》在现代软件开发中,面向切面编程(AOP)是一种非常重要的技术,能够有效实现日志记录、安全控制、性能监控等横切关注点的分离,在传统的AOP实现中,切... 目录引言一、AOP 概述1.1 什么是 AOP1.2 AOP 的典型应用场景1.3 为什么需要动态插

Golang操作DuckDB实战案例分享

《Golang操作DuckDB实战案例分享》DuckDB是一个嵌入式SQL数据库引擎,它与众所周知的SQLite非常相似,但它是为olap风格的工作负载设计的,DuckDB支持各种数据类型和SQL特性... 目录DuckDB的主要优点环境准备初始化表和数据查询单行或多行错误处理和事务完整代码最后总结Duck

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert