当前位置: 首页 > news >正文

爬虫 — 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:关键字搜索

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

相关文章:

爬虫 — 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累计推出了&#xff1a…...

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绘制图片和文字,并跟随鼠标移动

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

【智能电表数据接入物联网平台实践】

智能电表数据接入物联网平台实践 设备接线准备设备调试代码实现Modbus TCP Client 读取电表数据读取寄存器数据转成32bit Float格式然后使用modbusTCP Client 读取数据 使用mqtt协议接入物联网平台最终代码实现 设备接线准备 设备调试 代码实现 Modbus TCP Client 读取电表数…...

Docker--network命令的用法

原文网址&#xff1a;Docker--network命令的用法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍Docker的network网络命令的用法。 官网网址 docker network | Docker Documentation 命令概述 所有命令 命令名称 说明 docker network connect 将容器连接到网络 dock…...

优维低代码实践:图片和搜索

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…...

[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 &#xff0c;包含若干 互不相同 的整数&#xff0c;以及另一个整数数组 arr &#xff0c;arr 可能 包含重复元素。 每一次…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...