爬虫 — App 爬虫(一)
目录
- 一、介绍
- 二、APP 爬虫常见反爬
- 三、APP 抓包常用工具
- 四、模拟器
- 五、安装 APP
- 1、下载 APP
- 2、安装 APP
- 六、fiddler
- 1、工作原理
- 2、安装
- 3、基本介绍
- 七、环境配置
- 1、fiddler 的配置
- 2、夜神模拟器的配置
- 八、案例
一、介绍
爬虫分类——数据来源
1、PC 端爬虫(网页端爬虫)
- 找数据接口(requests,scrapy等)
- selenium
2、APP 端爬虫
-
找数据接口
获取数据接口——fiddler
获取 APP 与服务器进行交互的数据包——模拟器
-
appium
二、APP 爬虫常见反爬
1、抓不到数据包请求
2、抓取数据包里的参数涉及加密(APP 逆向)
三、APP 抓包常用工具
| 抓包软件名称 | 支持的操作系统 | 适用平台 | 调试难易程度 | 软件功能程度 |
|---|---|---|---|---|
| fiddler | Windows/Linux | 网页端、APP 端 | 一般 | 多 |
| mitmproxy | Windows/Mac/Linux | 网页端、APP 端 | 一般 | 多 |
| packetCapture | 安卓 | APP 端 | 简单 | 少 |
四、模拟器
1、安装夜神模拟器安装包;
点击下载夜神模拟器安装包
2、安装好后桌面会多出两个软件,点击模拟器助手;

3、点击“多开管理”;

4、点击“添加模拟器”,新建一个模拟器;

5、选择一个模拟器;

6、点击设置;

7、选择"手机版"后,点击“保存设置”;

8、启动模拟器;

9、界面启动成功;

五、安装 APP
点击下载 APP 应用安装包
1、下载 APP
1、输入需要安装的 APP 名称,点击搜索;

2、点击“查看”;

3、取消选择框;

4、点击“普通下载”;

2、安装 APP
1、直接把下载好的 apk 拖拽到模拟器(常用);
2、通过命令进行安装。
六、fiddler
1、工作原理

2、安装
点击进入官网下载地址
点击进入百度网盘地址
1、点击“I Agree”;

2、选择安装路径,点击“Install”;

3、点击“Close”;

4、这个软件不会自动在桌面上创建快捷方式,可以自己手动创建,
在安装路径文件夹里找到“Fiddler.exe”文件,右键点击,选择“发送到”,选择“桌面快捷方式”;

3、基本介绍
1、界面展示

2、快捷功能区

1:给会话添加备注信息
2:重新加载当前会话
3:删除会话选项
4:放行,和断点对应
5:响应模式,当 fiddler 拿到远程的 response 后是缓存起来一次响应给客户端还是以 stream 的方式直接响应
6:解码,有些请求是被编码的,点击这个按钮后可以根据响应的编码格式自动解码
7:查找会话
8:保存会话
9:截屏,截屏后,会以会话的方式返回一个截图
3、常用功能
清空数据包

停止抓包

保存数据包

打断点

更多内容可点击参考
七、环境配置
1、fiddler 的配置
HTTPS
让 fiddler 能够捕获 https 的请求











检查证书是否安装成功


如果能看到这两个证书,就说明证书已经安装成功了
Connections



然后重新启动 fiddler
2、夜神模拟器的配置
1、打开夜神模拟器,在桌面上找到“工具”并点击,然后找到“设置”并点击;

2、滑动到最底部,点击“关于平板电脑”;

3、滑动到最底部,不停的点击“版本号”;

4、直到出现“您现在处于开发者模式”为止;

5、点击返回上一页,会出现“开发者选项”,点击进去;

6、打开“USB调试”,点击“确定”;

7、返回桌面,打开浏览器,点击“设置”;

8、选择“隐私和安全”;

9、点击取消选中“显示安全警告”;

10、然后重启模拟器,点击“设置”,找到“WLAN”,点击进入;

11、在“WiredSSID”上长按鼠标左键,点击“修改网络”;

12、可按 win+R 后,输入 cmd 进入电脑终端;

13、回到桌面,点击浏览器,在地址栏里输入 ip 地址和端口号后,点击“FiddlerRoot certificate”(如没有出现此页面可重新启动模拟器);

14、点击“下载”;

15、点击“下载已完成”;

16、填入“证书名称”后,点击“确定”;

17、此时,会跳出弹窗提示,需要设置密码,点击“确定”;

18、点击“密码”;

19、输入密码后,点击“继续”;

20、点击“完成”。

八、案例
目标 APP:当当
需求:爬取书名、作者、出版社、好评率、价格
1、在“豌豆荚”网站下载好目标 APP 后,将 APP 拖拽进模拟器中
2、打开 APP,在搜索框里输入内容,输入内容前,先在 fiddler 里清空数据包

3、点击“Find”查找相关数据包后,点击“Find Sessions”

4、依次点击高亮显示的数据包,找到有数据的

5、数据为乱码,点击图中框框的位置

6、点击后正常显示

7、数据为 json 格式,点击“JSON”,更方便查看数据

8、复制数据包的 url

代码实现
import requests # 导入 requests 模块,用于发送网络请求
# pip install rich
from rich import print as rprint # 导入 rich 模块的 print 函数,用于打印带样式的输出# 目标 url
url = 'http://mapi7.dangdang.com/index.php?page_version=new2&access-token=&time_code=0a700316b85a0d578709bd673dd123dc&img_size=e&client_version=10.12.4&pageSize=10&union_id=537-100998×tamp=1687961723&province_id=111&permanent_id=20230628220338845805790296886915991&a=all-search&global_province_id=111&page_action=search&c=search&sort_type=default_0&keyword=%E7%88%AC%E8%99%AB&udid=4aa439184898c3fbab8ed2cd869b77e1&user_client=android&page=1'# 发送 get 请求,获取响应对象
res = requests.get(url)# 使用 rich 模块的 print 函数打印响应对象中的 JSON 数据的 product 字段
# rprint(res.json()['data']['product']) # 返回的数据类型 list# 获取响应对象中的 product 列表
product_lst = res.json()['data']['product']# 遍历 product 列表
for product in product_lst:# 创建字典item = {}item['title'] = product.get('productName') # 获取商品名称item['author'] = product.get('author') # 获取商品作者item['publisher'] = product.get('publisher') # 获取商品出版社item['commentCount'] = product.get('commentCount') # 获取商品评论数item['price'] = product.get('price') # 获取商品价格print(item) # 打印商品信息print('-' * 100) # 分隔线
注意:
1、pip install rich 安装报错
检查是否开启 fiddler,开启的话可能会报错,关闭 fiddler,再重新安装即可
2、url 里面
page:控制翻页
keyword:关键字搜索
记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~
相关文章:
爬虫 — App 爬虫(一)
目录 一、介绍二、APP 爬虫常见反爬三、APP 抓包常用工具四、模拟器五、安装 APP1、下载 APP2、安装 APP 六、fiddler1、工作原理2、安装3、基本介绍 七、环境配置1、fiddler 的配置2、夜神模拟器的配置 八、案例 一、介绍 爬虫分类——数据来源 1、PC 端爬虫(网页…...
如何使用正则表达式实现Java日志信息的抓取与收集
首先,什么是Java日志信息?简单来说,Java应用程序在运行过程中会输出一些信息,这些信息可以用来追踪程序运行状态、调试错误等。而Java日志信息就是这些输出信息的集合。 那么为什么要抓取和收集Java日志信息呢?一方面…...
C/C++算法入门 | 简单模拟
不爱生姜不吃醋⭐️ 如果本文有什么错误的话欢迎在评论区中指正 与其明天开始,不如现在行动! 文章目录 🌴前言🌴一、害死人不偿命的(3n1)猜想1.题目(PAT B1001)2.思路3.代码实现 &am…...
stm32学习-芯片系列/选型/开发方式
【03】STM32HAL库开发-初识STM32 | STM概念、芯片分类、命名规则、选型 | STM32原理图设计、看数据手册、最小系统的组成 、STM32IO分配_小浪宝宝的博客-CSDN博客 STM32:ST是意法半导体,M是MCU/MPU,32是32位。 ST累计推出了:…...
mnist数据集
训练模型 import tensorflow as tfimport keras from keras.models import Sequential from keras.layers import Dense,Dropout, Flatten,Conv2D, MaxPooling2D # from keras.optimizers import SGD from tensorflow.keras.optimizers import Adam,Nadam, SGDfrom PIL import…...
Java之IO概述以及
1.1 什么是IO 生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrls ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键…...
Spring WebFlux—Reactive 核心
一、概述 spring-web 模块包含以下对响应式Web应用的基础支持: 对于服务器请求处理,有两个级别的支持。 HttpHandler: 用于HTTP请求处理的基本约定,具有非阻塞I/O和Reactive Streams背压,以及Reactor Netty、Undertow、Tomcat、…...
由于找不到d3dx9_43.dll,无法继续执行代码要怎么解决
D3DX9_43.dll是一个动态链接库文件,它是DirectX的一个组件,主要用于支持一些旧版本的游戏和软件。当电脑缺少这个文件时,可能会导致这些游戏和软件无法正常运行。例如,一些老游戏可能需要D3DX9_43.dll来支持图形渲染等功能。此外&…...
git安装配置教程
目录 git安装配置1. 安装git2. git 配置3.生成ssh key:4. 获取生产的密钥3. gitee或者github添加ssh-key4.git使用5. git 使用-本地仓库与远程仓库建立连接第一步:进入项目文件夹,初始化本地仓库第二步:建立远程仓库。 建立远程连接的小技巧 …...
要如何选择报修工单管理系统?需要注意哪些核心功能?
现如今,越来越多的企业已经离不开报修工单管理系统,但市面上的产品繁多,很难寻找到一款特别符合企业需求的系统。企业采购报修工单管理系统的主要目的在于利用其核心功能,如工单流转等,来解决工作事件的流程问题&#…...
面对大数据量渲染,前端工程师如何保证页面流畅性?
一、问题背景 在web前端开发中,需要渲染大量数据是很常见的需求。拿一般的业务系统来说,一个模块中往往需要显示成百上千条记录,这已经属于比较大的数据量。而一些大型系统,如数据分析平台、监控系统等,需要同时渲染的 数据量可能达到几十万甚至上百万。 面对大数据量渲染的需…...
2023年浙工商MBA新生奖学金名单公布,如何看待?
浙工商MBA项目官方最新公布了2023年的非全日制新生奖学金名单,按照政策约定,共分为特等奖学金1名,一等奖学金10名,二等奖学金15名,三等奖学金30名,额度对应3万、1万、0.8万、0.5万不等,主要名单…...
关于时空数据的培训 GAN:实用指南(第 02/3 部分)
一、说明 在本系列关于训练 GAN 实用指南的第 1 部分中,我们讨论了 a) 鉴别器 (D) 和生成器 (G) 训练之间的不平衡如何导致模式崩溃和由于梯度消失而导致静音学习,以及 b) GAN 对超参…...
UNIAPP利用canvas绘制图片和文字,并跟随鼠标移动
最近有个项目,要触摸组件,产生一条图片跟随移动,并显示相应的文字,在网上找了一些资料,终于完成构想,废话少说,直接上代码(测试通过) <template> <view>…...
【智能电表数据接入物联网平台实践】
智能电表数据接入物联网平台实践 设备接线准备设备调试代码实现Modbus TCP Client 读取电表数据读取寄存器数据转成32bit Float格式然后使用modbusTCP Client 读取数据 使用mqtt协议接入物联网平台最终代码实现 设备接线准备 设备调试 代码实现 Modbus TCP Client 读取电表数…...
Docker--network命令的用法
原文网址:Docker--network命令的用法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Docker的network网络命令的用法。 官网网址 docker network | Docker Documentation 命令概述 所有命令 命令名称 说明 docker network connect 将容器连接到网络 dock…...
优维低代码实践:图片和搜索
优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 优维…...
[Qt]控件
文章摘于 爱编程的大丙 文章目录 1. 按钮类型控件1.1 按钮基类 QAbstractButton1.1.1 标题和图标1.1.2 按钮的 Check 属性1.1.3 信号1.1.4 槽函数 1.2 QPushButton1.2.1 常用API1.2.2 按钮的使用 1.3 QToolButton1.3.1 常用API1.3.2 按钮的使用 1.4 QRadioButton1.4.1 常用API…...
GEE:快速实现时间序列线性趋势和变化敏感性计算(斜率、截距)以NDVI时间序列为例
作者:CSDN @ _养乐多_ 本博客将向您介绍如何使用Google Earth Engine(GEE)平台来处理Landsat 5、7和8的卫星图像数据,构建时间序列,以NDVI为例,计算NDVI时间序列的斜率和截距,以及如何导出这些结果供进一步分析使用。 文章目录 一、代码详解1.1 核心代码详解1.2 核心代…...
LC1713. 得到子序列的最少操作次数(java - 动态规划)
LC1713. 得到子序列的最少操作次数 题目描述LIS 动态规划 二分法代码演示 题目描述 难度 - 困难 LC1713.得到子序列的最少操作次数 给你一个数组 target ,包含若干 互不相同 的整数,以及另一个整数数组 arr ,arr 可能 包含重复元素。 每一次…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
全面解析各类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…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...
jmeter聚合报告中参数详解
sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample(样本数) 表示测试中发送的请求数量,即测试执行了多少次请求。 单位,以个或者次数表示。 示例:…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
