爬虫 — 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 抓包常用工具

抓包软件名称支持的操作系统适用平台调试难易程度软件功能程度
fiddlerWindows/Linux网页端、APP 端一般
mitmproxyWindows/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&timestamp=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:关键字搜索

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

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

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

相关文章

Multisim14.0仿真(二十)74LS161 4位同步二进制加法计数器

一、仿真原理图: 二、仿真效果图:

云计算的未来:云原生架构和自动化运维的崭露头角

文章目录 云计算的演进云原生架构1. 容器化2. 微服务3. 自动化部署和扩展4. 故障恢复 自动化运维1. 基础设施即代码(IaC)2. 运维自动化示例:使用Ansible自动化配置管理 3. 自动化监控和报警 未来展望1. 更多的自动化2. 多云混合云3. 边缘计算…

Matlab程序结构

目录 顺序结构循环结构1、for循环结构 分支结构1、if...end结构2、if...else...end结构3、switch...case...end结构 顺序结构 顺序结构是最简单的程序结构。用户在编写玩程序后,系统就将按照程序的实际位置逐一顺次执行。 例1:求a、b两个数组的和 >…

《DevOps实践指南》- 读书笔记(九)

DevOps实践指南 25. 附录附录 1 DevOps 的大融合精益运动敏捷运动Velocity 大会运动敏捷基础设施运动持续交付运动丰田套路运动精益创业运动精益用户体验运动Rugged Computing 运动 附录 2 约束理论和核心的长期冲突附录 3 恶性循环列表附录 4 交接和队列的危害附录 5 工业安全…

Calendar对象获取当前周的bug

项目场景: 双周项目管理,需要获取当前周为一年之中的第几周,原先的代码是用Calendar对象,先用setTime()把当前时间传入,再用get(3)获取一年中的第几周 问题描述 实际发…

如何向PDB文件添加双键

在用PDB文件进行分子绘图的时候(制作OBJ),发现像Atomic blender插件和PDB本身并不支持双键,需要对PDB文件进行修改,参照的该yt链接https://www.youtube.com/watch?vYNoow7qkwFA&t364s&ab_channelEdvinFako 即…

Secrets of RLHF in Large Language Models Part I: PPO

本文是LLM系列文章,针对《Secrets of RLHF in Large Language Models Part I: PPO》的翻译。 大型语言模型中RLHF的秘密(上):PPO 摘要1 引言2 相关工作3 人类反馈的强化学习4 有益和无害的奖励模型5 PPO的探索6 评估和讨论局限性…

由于找不到d3dx9_43.dll,无法继续执行代码要怎么解决

D3DX9_43.dll是一个动态链接库文件,它是DirectX的一个组件,主要用于支持一些旧版本的游戏和软件。当电脑缺少这个文件时,可能会导致这些游戏和软件无法正常运行。例如,一些老游戏可能需要D3DX9_43.dll来支持图形渲染等功能。此外&…

UNIAPP利用canvas绘制图片和文字,并跟随鼠标移动

最近有个项目&#xff0c;要触摸组件&#xff0c;产生一条图片跟随移动&#xff0c;并显示相应的文字&#xff0c;在网上找了一些资料&#xff0c;终于完成构想&#xff0c;废话少说&#xff0c;直接上代码&#xff08;测试通过&#xff09; <template> <view>…

#循循渐进学51单片机#变量进阶与点阵LED#not.6

1、掌握变量的作用域及存储类别。 局部变量 函数内部声明的变量&#xff0c;只在函数内部有效&#xff0c;在本函数以外是不能使用的&#xff0c;叫局部变量。 全局变量 在函数外部声明的变量就是全局变量&#xff0c;一个源程序可以包含一个或多个函数&#xff0c;全局变量…

需求是怎么一步一步变态的

最初的需求 需求是处理一些数据&#xff0c;数据例子&#xff1a; 而界面要显示的样子&#xff1a; 看起来不太难&#xff0c;可以分解出需求&#xff1a; 每一列的所有数据要都能参与选择&#xff0c;或者输入当一个参数选中之后&#xff0c;比如选中A选中1&#xff0c;则…

Jenkins用户管理(二):不同用户分配不同的任务访问权限

需求:不同用户访问到不同的Jenkins任务。 依赖插件:Role-based Authorization Strategy 1. 插件安装 进入【系统管理】-【插件管理】-【可用插件】,搜索Role-based Authorization Strategy进行安装,随后重启jenkins 2. 全局安全配置 进入【系统管理】-【全局安全配置】,【…

K8S:Pod容器中的存储方式及PV、PVC

文章目录 Pod容器中的存储方式一&#xff0e;emptyDir存储卷1.emptyDir存储卷概念2.emptyDir存储卷示例 二.hostPath存储卷1.hostPath存储卷概念2.hostPath存储卷示例 三.nfs共享存储卷1.nfs共享存储卷示例 四.PV和PVC1.PV、PVC概念2.PVC 的使用逻辑及数据流向3.storageclass插…

自动化测试:yaml结合ddt实现数据驱动!

在pythonunittestseleniumddt的框架中&#xff0c;数据驱动常见有以下几种方式实现&#xff1a; Csv/txtExcelYAML 本文主要给大家介绍测试数据存储在YAML文件中的使用场景。首先先来简单介绍一下YAML。 1. 什么是YAML 一种标记语言类似YAML&#xff0c;它实质上是一种通用…

WslRegisterDistribution failed with error: 0x800701bc

WslRegisterDistribution failed with error: 0x800701bc 安装 适用于 x64 计算机的 WSL2 Linux 内核更新包 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi 然后&#xff1a; wsl --set-default-version 2

git安装配置教程

目录 git安装配置1. 安装git2. git 配置3.生成ssh key:4. 获取生产的密钥3. gitee或者github添加ssh-key4.git使用5. git 使用-本地仓库与远程仓库建立连接第一步&#xff1a;进入项目文件夹&#xff0c;初始化本地仓库第二步&#xff1a;建立远程仓库。 建立远程连接的小技巧 …

文盘Rust -- tonic-Rust grpc初体验 | 京东云技术团队

gRPC 是开发中常用的开源高性能远程过程调用&#xff08;RPC&#xff09;框架&#xff0c;tonic 是基于 HTTP/2 的 gRPC 实现&#xff0c;专注于高性能、互操作性和灵活性。该库的创建是为了对 async/await 提供一流的支持&#xff0c;并充当用 Rust 编写的生产系统的核心构建块…

Git学习笔记9

Gitlab中的代码是要部署到生产服务器上。 CI&#xff1a; Continuous integration 简称CI&#xff1a; 是一种软件开发实践&#xff0c;即开发团队成员经常集成他们的工作&#xff0c;通常每个成员每天至少集成一次&#xff0c;也就意味着每天可能会发生多次集成。每次集成都…

动态规划之回文串问题

回文串 1. 回文子串2. 最长回文子串3. 分割回文串 IV4. 分割回文串 II5. 最长回文子序列6. 让字符串成为回⽂串的最⼩插⼊次数 1. 回文子串 1.题目链接&#xff1a;回文子串 2.题目描述&#xff1a; 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中 回文子串 的数目…

多目标优化算法:基于非支配排序的鱼鹰优化算法(NSOOA)MATLAB

一、鱼鹰优化算法 鱼鹰优化算法&#xff08;Osprey optimization algorithm&#xff0c;OOA&#xff09;由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出&#xff0c;其模拟鱼鹰的捕食行为。 Python&#xff1a;鱼鹰优化算法&#xff08;Osprey optimization algorithm&a…