移动端爬虫学习记录

news/2024/9/18 6:04:55/ 标签: fiddler, android, mt, 爬虫

免责声明

        本文旨在探讨移动端爬虫技术的应用和挑战,仅供教育和研究用途。请确保在合法合规的框架内使用爬虫技术,遵循相关法律法规和网站的使用条款。作者不对因使用本文内容而产生的任何法律或安全问题承担责任


1、初识移动端爬虫

学习移动端爬虫的原因

①、随机互联网的发展,数据不仅仅只是存在于PC端。移动端的数据在这几年的占比以及势头发展趋势呈现几何倍数的增长。对于做数据分析、用户画像、市场调研来说仅仅参考PC端的数据是远远不够的。

②、部分网站的web端难爬取数据,反而APP的反爬措施更简单,甚至没有反爬。

移动端爬虫的原理

App 中的页面要加载出来,首先需要获取数据,而这些数据一般是通过请求服务器的接口来获取,由于 App 没有浏览器这种可以比较直观地看到后台请求的开发者工具,所以主要用一些抓包技术来抓取数据。


2、移动端工具的安装

概述:既然要学习移动端爬虫,就需要移动端,我们可以采用真实手机或模拟器,由于修改系统可能会导致手机无法正常使用,所以本文所有操作都基于虚拟机进行。

网上有许多虚拟手机软件:夜神模拟器、雷电模拟器、网易MuMu模拟器、逍遥模拟器等等...可以选择的任意一种(推荐野神模拟器,它的模拟器助手可以多开并且创建指定版本的android)。


3、抓包工具的安装与配置

概述:Fiddler是一个http协议调试代理工具,它能够记录并检查所有的电脑和互联网之间的http通讯,设置断点,查看所有的进出Fiddler的数据(cookie,html,js,css等文件),并且Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。

3.1、Fiddler安装

①.首先进入官网下载:Download Fiddler Web Debugging Tool for Free by Telerik

注意:国家一定要选China,其他问题随便。

下载后的界面如下:

②、下载完成后双击打开进行安装;

③、安装时无脑下一步即可(可以更改一下安装位置),安装完成后会跳转到如下界面:


3.2、配置Fiddler

①、安装好后启动Fiddler(可以在开始菜单中找到);

②、打开配置菜单:

③、勾选https并勾选忽略错误:

概述:Fiddler默认只抓取http协议的请求,需要修改配置实现抓取https协议的请求,需要手动勾选Decypt HTTPS traffic,勾选后会有证书安装的窗口弹出,都选择YES

④、勾选允许远程连接:


4、抓包配置

概述:在前面的章节中已经准备好了模拟器和Fiddler抓包工具,但是Fiddler抓包工具并不能抓到模拟器的请求,本章节主要解决Fiddler抓包工具无法抓取模拟器请求的问题及问题解决后出现的安全证书问题。

4.1、获取主机IPv4地址

概述:电脑打开cmd(命令提示符),输入如下命令获取本机的IPV4地址(注意区分,不要拿到虚拟机的地址):

ipconfig

参考图片如下:

为防个人隐私泄露,假设该IPv4地址为192.168.1.2,后面将用该地址举例,大家将其替换成自己的IPv4地址即可。


4.2、验证IPv4地址

概述:验证IPv4地址(要提前打开Fiddler),在浏览器地址栏参考如下地址输入自己的地址:

# 这里的8888就是配置Fiddler是设置的端口号,如果你在配置Fiddler时修改了端口号,需要将端口号替换
# 记得将IP地址替换成自己的IPv4地址
192.168.1.2:8888

打开如下地址就是正确的:


4.3、设置模拟器代理

流程:首先打开夜神模拟器 > 点击工具文件夹 > 点击设置 > 点击WLAN > 长按已连接的WLAN > 点击修改网络 > 点击高级选项右侧的向下箭头 > 点击代理右侧的向下三角 > 点击手动 > 填入主机IPv4的地址和Fiddler设置的端口号 > 点击保存。(具体流程可参考下图)

至此,模拟器代理就设置完成了。


4.4、解决android7.0版本以下的安全警告


概述:当我们进入模拟器的浏览器进入任意https开头的网址都会弹出安全警告,如下图:

在浏览器中的地址栏参考如下地址输入:

# 记得替换成自己的IP地址
192.168.1.2:8888

进入该界面后点击下载证书:

接下来安装证书:

接下来设置密码:

后面还需要确认一下密码,这里就不展示了,设置完成后的界面如下:

但是当我们再次进入浏览器访问百度时任然会有警告信息!

欸!为什么下载了证书还是会弹安全警告?哦,原来我们的模拟器android版本大于7.0了(如下图):

分析:在设置 > 安全 > 信任凭证 > 用户 中我们可以看到刚刚下载的安全证书,对于android7.0版本以下的设备只需要将安全证书放在用户中即可正常访问,但对于android7.0版本以上的用户就需要将证书放在系统中。


4.5、解决android7.0版本以上的安全警告

4.5.1、导出Fiddler证书

流程:打开Fiddler > Tools > Options > HTTPS > Actions > Export Root Certificate to Desktop

注意:导出的证书会自动生成到桌面上。

提示:为了方便后期操作,我将证书移动到了D盘的根目录。


4.5.2、下载openssl

概述:我们刚刚导出的证书移动端是无法识别的,我们需要通过openssl这个工具将导出的证书转换成移动端能识别的证书。

下载地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions (slproweb.com)

提示:需要更具自己电脑的实际情况下载EXE文件,我的电脑是64位的,所以下载了Win64的EXE文件:

双击打开下载好的EXE文件,然后无脑下一步进行安装即可(建议修改一下安装地址,方便后面找到),安装完成后会问你是否要捐款,将√去掉然后点Finish即可。


4.5.3、操作openssl

概述:首先打开openssl的安装地址,我将其安装在了D盘下一个名为OpenSSL-Win64的文件夹中,然后进入该文件夹中一个名为bin的文件夹中,完整路径如下:D:\OpenSSL-Win64\bin,然后在地址栏输入cmd回车即可:

回车后打开了如下命令提示符:

接下来在命令提示符中输入如下命令将Fiddler导出的cer证书转换为pem证书并存放到d盘根目录(Fiddler导出的证书我已经提前放在了D盘根目录):

openssl x509 -inform DER -in d:\FiddlerRoot.cer -out d:\FiddlerRoot.pem

运行后的文件夹内容如下:

在命令提示符中输入如下命令使用md5方式显示pem证书的hash值,然后保存该值用于后面改名:

openssl x509 -inform PEM -subject_hash_old -in d:\FiddlerRoot.pem

然后将刚刚生成到D盘根目录的FiddlerRoot.pem文件改重命名为 hash值.0,例如我改名成了269953fb.0


4.5.4、安装证书到系统目录

①、首先获取访问权限

②、返回桌面并将刚刚改名的269953fb.0文件拖拽到模拟器桌面,拖拽完成后就会自动进入安卓文件夹

 ③、拷贝该文件

④、将证书拷贝到//system/etc/security/cacerts

拷贝后的内容如下:

⑤、虽然已经将证书添加到系统中了,但该证书的权限不足导致无法生效,接下来我们通过MT管理器为该证书修改权限

MT管理器获取:MT管理器_免费高速下载|百度网盘-分享无限制 (baidu.com)

提示1:将下载好的apk文件直接拖拽到模拟器桌面进行安装即可。

接下来打开安装好的MT管理器(所有权限都允许)

提示2:不需要更新(不影响使用,时间久了就不保真了),不需要登录(点击虚拟机空白处或按ESC就可以跳过登录)

运行如下命令:

# 进入存放证书的目录
cd /system/etc/security/cacerts# 切换为root用户
su# 重新挂载系统,使文件具有可读写权限
mount -o rw,remount /system# 修改证书权限
chmod 644 269953fb.0# 重启模拟器

参考截图如下(软件的显示好像有问题,参考上面提供的命令运行即可):

重启模拟器后,打开设置 > 安全 > 信任的凭证 > 系统 中找到名称中带有 FiddlerRoot 的证书,如果能找到就说明我们已经成功的将证书放进了模拟器的系统中,并且能正常使用,如下图:

至此,对于android7.0版本以上系统的请求都能被Fiddler获取且没有安全警告。


5、抓包案例

概述:本章节将通过抓取某小说app的排行数据实现抓包练习。

①、实操前需要进入模拟器桌面的游戏中心下载任意一款小说软件

②、下载完成后进入首页

③、进入Fiddler,清空所有的请求

④、立即点击模拟器中小说首页的排行

⑤、逐个排查每一个响应内容(如果找不到数据可以尝试点击排行中的女生,重新获取新的响应)

⑥、找到响应后获取数据链接

⑦、验证地址的真实性,将获取的地址放在浏览器中去获取,获取的内容如下(更加确信该地址就是排行数据):

⑧、编写爬虫获取指定数据(运行爬虫文件时要关闭Fiddler,否则会没有响应甚至报错)

注意:当运行程序时发现程序运行较慢时,可能时响应被Fiddler劫持了,此时将Fiddler关闭即可。

import requestsdef get_data():url = 'https://b.zhuishushenqi.com/category/rank-recommend?node=recommendfemale&size=100&token=&gender=female&tag=&type=&packageName=com.ushaqi.zhuishushenqi&userid=yk_bc66a5dbbf1cf8895e534'header = {'User-Agent':'Mozilla/5.0 (Linux; Android 7.1.2; SM-G977N Build/LMY48Z; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.131 Mobile Safari/537.36'}books = requests.get(url,headers=header)for book in books.json().get('books'):title = book.get('title')author = book.get('author')hot = book.get('bookIndicator')print(f'标题:{title},作者:{author},热度:{hot}')if __name__ == '__main__':get_data()

运行结果如下:

注意:虽然我们的案例中很顺利地获取到了数据,但不是所有的app都会如此,部分app的响应也会做加密处理。


http://www.ppmy.cn/news/1516461.html

相关文章

7. Java 中 HashMap 的扩容机制是怎样的?

​​​​​​HashMap 是基于哈希表的数据结构,其容量是动态调整的。当存储的元素数量增加时,为了保持较好的性能,HashMap 需要进行扩容。HashMap 的扩容机制是为了减少哈希碰撞,提高查询效率。 1. 初始容量和负载因子 初始容量&a…

Android 退出app方式(回忆录)

一、点击返回键或者设备back键调用finish private void back(){finish(); }或Overridepublic void onBackPressed() {super.onBackPressed();}二、结束进程 android.os.Process.killProcess(android.os.Process.myPid()); 三、方法二exit结束java虚拟机 System.exit(0); 四…

uniapp中路由的基本使用方法、参数传递方式以及路由拦截与权限控制

一、概述 在uniapp开发中,路由是非常重要的一个方面,它可以实现页面之间的跳转和传递参数。本文将介绍uniapp中路由的使用技巧,并给出具体的代码示例。 二、uniapp路由的基本使用 在uniapp中,路由的基本使用可以通过uni.navigate…

ai变声:视频怎么变音?分享6个语音变声器,视频变声不再难!

想过如何让自己的直播内容更吸引人吗?你是否希望通过变声器来打造独特的声音效果?或者,如何用创意声音提升观众的互动体验呢?随着直播行业的不断发展,每位主播都在努力寻找吸引观众的独特方式,而变声器正是…

【Test 001】Qt 开发基础体系 QMap 类和 QHash 类以及 QVector 类

文章目录 1.QMap 详解1.1 QMap 的介绍1.2 QMap 的具体用法如下1.3 QmultiMap类 2.QHash 详解3. QMap 和 QHash 的对比4. QVector 详解 1.QMap 详解 1.1 QMap 的介绍 &#x1f427;① QMap<key,T>提供一个从类型为Key的键到类型为T的值的映射。通常&#xff0c;QMap存储的…

新手小白Ubuntu18.04超详细安装教程

1、Ubuntu18.04系统下载地址 Ubuntu18.04下载地址 直接下载桌面版 2、Ubuntu18.04安装 &#xff08;1&#xff09;打开VMware虚拟机 文件—>新建虚拟机—>选择典型 &#xff08;2&#xff09;选择稍后安装系统 &#xff08;3&#xff09;选择linux系统&#xff0c;…

学习记录:js算法(十五):三数之和

文章目录 三数之和我的思路网上思路 总结 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元组。 注意&…

win/mac视频剪辑软件Premiere Pro 2024下载安装

目录 一、简介 &#xff08;一&#xff09;高级调色功能 &#xff08;二&#xff09;字幕制作 &#xff08;三&#xff09;与其他 Adobe 软件的协同工作 下载 二、安装 &#xff08;一&#xff09;安装前的准备工作 &#xff08;二&#xff09;安装过程中的常见问题及解…

前端面试宝典【CSS篇】【8】

在前端开发的世界里,每一次面试都是一次机遇,也是一次挑战。 你是否曾因技术深度不够而错失良机? 或是面对最新的技术趋势感到迷茫? 我们的【前端面试宝典】正是为此而来。 由拥有多年一线实战经验的资深工程师亲自授课,结合最新的行业动态与实战案例,旨在全面提升你的技…

【算法进阶2-动态规划】斐波那契数列(递归调用、动态规划)、钢条切割问题(自定而下实现、自底向上、切割方案)

1 斐波那契数 2 钢条切割问题 2.1 最优解情况 2.2 钢条切割问题之自定而下实现 2.3 钢条切割问题之自底向上实现 2.4 钢条切割问题-重构解-切割方案 1 斐波那契数 # 1 子问题的重复计算 def fibonacci(n: int) -> int:"""使用递归方式计算第 n 个斐波那契数…

美国高防服务器测评

美国高防服务器通常具有出色的硬件配置和网络性能&#xff0c;以及强大的DDoS防御能力。rak小编为您整理发布美国高防服务器测评。 美国高防服务器因其地理位置和网络基础设施的优势&#xff0c;通常被认为在防御分布式拒绝服务(DDoS)攻击方面具有较高的能力。面对日益增长的网…

基于R语言遥感随机森林建模与空间预测

随机森林作为一种集成学习方法&#xff0c;在处理复杂数据分析任务中特别是遥感数据分析中表现出色。通过构建大量的决策树并引入随机性&#xff0c;随机森林在降低模型方差和过拟合风险方面具有显著优势。在训练过程中&#xff0c;使用Bootstrap抽样生成不同的训练集&#xff…

力扣: 两两交换链表中的节点

文章目录 需求代码代码解释结尾 需求 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 示例 1&#xff1a; 输入&#xff1a;…

工厂模式与策略模式:理解与应用

工厂模式与策略模式&#xff1a;理解与应用 1. 引言2. 工厂模式简介2.1 定义2.2 特点2.3 应用场景2.4 工厂模式例子&#xff1a;咖啡制作 3. 策略模式简介3.1 定义3.2 特点3.3 应用场景3.4 策略模式例子&#xff1a;咖啡定价 4. 区别4.1 目的不同4.2 应用场景不同4.3 解决问题不…

浅谈Java Maven

一、基本介绍 Maven是Java项目的构建工具&#xff0c;通过项目对象模型&#xff08;POM&#xff09;管理项目配置信息&#xff0c;自动化构建、测试和部署过程。开发人员可定义项目结构、依赖和构建流程&#xff0c;提高开发效率和质量。本文介绍基本概念和用法&#xff0c;帮助…

【YOLOv8改进[Conv]】 感受野注意力卷积RFAConv(2024.3)| 使用RFAConv改进目标检测效果 + 含全部代码和详细修改方式

本文将进行在YOLOv8中使用 感受野注意力卷积RFAConv改进v8 的实践,助力YOLOv8目标检测效果,文中含全部代码、详细修改方式。助您轻松理解改进的方法。

时尚图像编辑

时尚图像编辑是一种应用计算机视觉和机器学习技术来改变或增强时尚摄影图像的领域。这种编辑可以包括更改服装颜色、形状或整体风格&#xff0c;以及调整模特在图像中的姿态或场景背景。 在您提到的背景中&#xff0c;现有的时尚图像编辑方法依赖于如分割器和关键点提取器这样…

FreeRTOS学习笔记>中断管理

1. 异常的定义与分类 异常&#xff1a;是指任何导致处理器脱离正常执行路径、并转向执行特定代码的事件。异常如果不及时处理&#xff0c;可能导致系统错误甚至瘫痪&#xff0c;因此异常处理对于系统的稳定性和鲁棒性非常重要&#xff0c;特别是在实时系统中。异常分类&#x…

【markdown 中的文字颜色设置】按色系分类

文本颜色分类 蓝绿色系:灰色系:蓝紫色系:粉色系:绿色系:橘棕色系:语法,以天蓝色为例: <font color=skyblue>我是文字</font>我是文字 或者 替换成对应的16进制 <font color=#87CEEB>同理</font>同理 接下来是按色系分类的颜色名 蓝绿色系: …

速盾:前端cdn加速是什么意思?

前端CDN加速是指通过使用内容分发网络&#xff08;CDN&#xff09;来加速前端页面加载和内容访问的一种技术手段。CDN是一种分布式架构的网络&#xff0c;通过将内容缓存到离用户更近的服务器节点上&#xff0c;可以有效地减少网络延迟&#xff0c;并提高页面加载速度和用户体验…