移动端爬虫学习记录

news2024/9/20 3:50:20

免责声明

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


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 requests

def 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.coloradmin.cn/o/2073135.html

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

相关文章

.NET 开发的高性能内网穿透工具

目录 前言 什么是NSmartProxy? 项目特点 运行原理 客户端安装 服务端安装 使用案例 项目地址 最后 前言 在许多情况下,我们需要从外部网络访问内部网络中的服务,比如家里的服务器或者公司的内部资源。这时内网穿透工具就可以帮助我们…

【吊打面试官系列-Memcached面试题】什么是二进制协议,我该关注吗?

大家好,我是锋哥。今天分享关于 【什么是二进制协议,我该关注吗?】面试题,希望对大家有帮助; 什么是二进制协议,我该关注吗? 关于二进制最好的信息当然是二进制协议规范: 1000道 互…

【AI+编程】只需1句提示词0代码生成前端展示效果

最近被Vercel发布的V0 编程效果惊艳到了, 不管是前端开发 还是立志成为全栈工程师的 同学,不可错过。 官网地址:https://v0.dev/chat/ 代码生成工具很多,不管是github copilot、阿里的通义灵码, 腾讯云的AI代码助手…

python 多进程 多线程 程序

这个纯粹为了增加理解,将很多比较好的资料进行归纳总结。 1、理论汇总 并发和并行 image.png 多进程和多线程 同步和异步 同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不会返回。 异步…

027集—CAD中批量删除多段线重复点、距离过近点——vba代码实现

cad图中多段线存在重复点、或距离过近点,可通过vba插件一键删除。 (精度可人工设定,例如精度设置0.001:小于0.001 的点视为重复点,删除此点。) 如下图: 如下图: 大量重复点和距离…

【Gaussian splatting系列学习】(三)

3DGS系列(一) 3DGS系列(二) 3DGS系列(三) 3D高斯球的颜色 基函数: 任何一个周期性函数可以分解为正弦和余弦的线性组合 球谐函数: 任何一个球面坐标的函数可以用多个球谐函数来近…

FPGA开发——在线调试工具Signal Tap的使用

一、简介 在我们进行FPGA进行开发时通常都会经历代码编写,仿真,下板验证等过程。使用FPGA进行开发的小伙伴都知道,在代码编写时往往花费不了太长的时间,下板验证更是。在开发中占绝大部分时间的是仿真,有时候编写代码只…

C++类和对象(下):初始化列表、explicit关键字、友元函数、友元类

文章目录 C类和对象9、初始化列表9.1构造函数体赋值9.2初始化列表9.3 explicit(显示)关键字 10、友元10.1友元函数10.2友元类 C类和对象 9、初始化列表 一个类的构造函数要初始化成员变量有两种方式,一种是构造函数体赋值,另一种…

【C++二分查找】2817. 限制条件下元素之间的最小绝对差

本文涉及的基础知识点 C二分查找 LeetCode2817. 限制条件下元素之间的最小绝对差 给你一个下标从 0 开始的整数数组 nums 和一个整数 x 。 请你找到数组中下标距离至少为 x 的两个元素的 差值绝对值 的 最小值 。 换言之,请你找到两个下标 i 和 j ,满…

python应用之内置hashlib库的哈希算法介绍

hashlib 是 Python 的一个内置模块,提供了像 SHA1, SHA256, MD5 等哈希算法。可以接受任意长度的字节数据作为输入,并输出一个固定长度的“哈希值”,通常用于校验数据的完整性。而且该算法是不可逆的,不能通过哈希值反算出原始数据…

zookeeper服务搭建

zookeeper服务搭建 前言1. 前置准备2. 下载和解压Zookeeper3. 配置环境变量4. 编辑Zookeeper配置文件5. 配置Zookeeper节点ID6. 配置好的Zookeeper分发到其他节点7. 启动Zookeeper集群参考博客 前言 Zookeeper是一个开源的分布式协调服务,主要用于解决分布式应用中的…

【Excal】OR 函数

语法: OR(判断条件1,判断条件2,判断体件3,****) 评优条件: 语文成绩高于90 数学成绩高于90 英语成绩高于85 物理成绩高于85 点击回车键 选中填充 回车 选中填充

echart legend 的使用及离开界面图表全局销毁

父组件 <template><AbnormalAlarmStatistics ref"abnormalAlarmStatistics" /> </template> <script setup> import {ref,reactive,computed,onMounted,getCurrentInstance,watch } from "vue";const { proxy } getCurrentInsta…

CentOS Docker搭建Mysql5.7集群

MySQL Replication MySQL提供了Replication功能&#xff0c;可以实现将一个数据库的数据同步到多台其他数据库。前者通常称之为主库&#xff08;master&#xff09;&#xff0c;后者则被称从库&#xff08;slave&#xff09;。MySQL复制过程采用异步方式&#xff0c;但延时非常…

图解Redis五大数据类型

五种数据类型的不同之处&#xff0c;是value在存储时的形式不同。 hash类型 value类型是<key,value>键值对。如果发生hash冲突&#xff0c;用开放定址法解决&#xff0c;不拉链&#xff01; key值重复&#xff0c;则新值覆盖旧值 List类型 Set类型 与List的类似&…

嵌入式Keil工具【微库】和【标准库】的对比

我们在学习或者用单片机做开发的时候,输出信息以及打印调试基本都会有用的 printf 函数,那么,这个时候基本都会用到【微库】。 如果使用 Keil 软件,就会勾选配置中的微库(MicroLib),如下图: 同样,在IAR、 e2 studio等开发单片机的集成开发环境中,也有类似的配置选项。…

电脑远程监控桌面软件集锦|(2024全网优秀资源整理!)

电脑远程监控桌面软件在企业管理和个人应用中扮演着重要的角色。 这些工具可以帮助企业提升工作效率、保护数据安全&#xff0c;同时也能在个人使用时提供便利。 以下是几款优秀的电脑远程监控桌面软件及其主要功能介绍&#xff1a; 1中科安企 特点&#xff1a;一款备受企业…

2024年第十五届蓝桥杯图形化省赛真题分享包含答案

Scratch初级:8月24日9:30-11:00 Scratch中级:8月24日14:00-15:30 Python:8月25日9:30-11:00 C++:8月25日14:00-15:30 这次考了哪些内容呢,我们来大概看看(编程题没有答案,编程题有,大家可以评论群留言单选题的答案):

智能手机摄影的发展方向全面分析

智能手机摄影技术在过去十年间取得了长足的进步&#xff0c;成为许多消费者购买手机时的主要考量因素。随着硬件和软件技术的不断创新&#xff0c;手机摄影的能力越来越接近甚至在某些方面超越了传统相机。本文将从多个角度分析手机摄影的发展方向&#xff0c;包括硬件、软件、…

2024年【防爆电气】找解析及防爆电气模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 防爆电气找解析考前必练&#xff01;安全生产模拟考试一点通每个月更新防爆电气模拟试题题目及答案&#xff01;多做几遍&#xff0c;其实通过防爆电气理论考试很简单。 1、【单选题】()电气设备没有防爆的外壳和保护…