Python爬虫入门教程 41-100 Fiddler+夜神模拟器+雷电模拟器配置手机APP爬虫部分
爬前叨叨
从40篇博客开始,我将逐步讲解一下手机APP的爬虫,关于这部分,我们尽量简化博客内容,在这部分中可能涉及到一些逆向,破解的内容,这部分尽量跳过,毕竟它涉及的东西有点复杂,并且偏离了爬虫体系太远,有兴趣的博友,可以一起研究下。
之前看到知乎有人对手机App爬虫归类,基本符合规则,接下来的10篇博客可能集中在80%的App上,所以还是比较简单的
- 50%的app,通过抓包软件就可以分析出抓取参数并抓取到信息。
- 30%的app,可能需要适当的反编译,分析出加密算法并抓取到信息。
- 10%的app,可能加固,需要脱壳,然后反编译,分析出加密算法并抓取到信息
- 10%的app,通过各式各样的签名,证书,设备绑定等方法,隐藏加密算法。
首先配置第一轮的环境,配置好了,下一篇博客,就采用Fiddler+夜神模拟器雷电模拟器等实现儿歌多多APP的数据抓取工作
抓包
抓包是爬虫里面经常用到的一个词,完整的应该叫做抓取数据请求响应包
,而Fiddler这款工具就是干这个的,当然还有其他工具,后面的博客中咱也会提及到
你可以百度关键字:Fiddler抓取手机APP 相关的博客一大票~,哪篇博客基本都可以叫你入门,所以你可以看看各家的,今天我这篇博客主要写的是Fiddler配合模拟器实现抓包操作。
百度Fiddler软件,找到官网,下载按照流程安装即可,当然你可以自己去找一个汉化版,这个看你使用百度的水平了,我使用的是4.0以上版本,建议你也使用这个吧,当然版本越高越好。
做一些简单的配置
普通https抓包设置
打开Fiddler ------> Options .然后打开的对话框中,选择HTTPS tab页,如图所示:
说明 (配置完后记得要重启Fiddler)
- 选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求
- Ignore server certificate errors忽略证书错误
第一次会提示是否信任fiddler证书及安全提醒,选择yes,之后也可以在系统的证书管理中进行管理。
配置Fiddler允许远程连接
切换tab选项卡到 Connections
配置端口
- 选中"Allow remote computers to connect". 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来
等会设置手机代理时需要。设置好后重启fiddler保证设置生效。
到现在为止,其实Fiddler已经可以抓取你电脑上浏览器访问的数据了,如果不行,重启Fiddler和浏览器即可
记录本机的IP
打开cmd窗口,不会的自行百度
在里面输入 ipconfig 获取你的ip4地址 ,这个地址一定要记住,后面配置模拟器的时候是需要用的~
ip 192.168.137.1
下载模拟器
你可能更多的时候是使用模拟器来打游戏,作为程序猿,模拟器上安装APK是非常好用的。
自行下载安装夜神模拟器,雷电模拟器或者其他的都可以
下载APK文件,直接拖拽到下面视图,就可以直接安装
找到设置,点击Wlan,长按鼠标左键,出现如下界面
点击修改网络
代理模式选择手动,输入刚才的IP和上述提到的8888端口
使用模拟器默认浏览器打开 , 点"FiddlerRoot certificate" 然后安装证书,如图:
安装完毕之后,打开模拟器上的浏览器,输入www.baidu.com
在Fiddler中抓取到如下链接,代表环境配置已经完毕
温馨提示下,在抓包过程中,你的fiddler不能关闭哦。关闭了之后你手机网络就不能用了。
停止网络监控的话去掉wifi的代理设置即可
设置过滤
1.手机上设置代理后,这时候fiddler上抓到的是pc和app所有的请求,如果pc上打开网址,会很多,这时候就需要开启过滤功能了。
2.打开fiddler>Tools>Fiddler Options>HTTPS>...from remote clients only,勾选这个选项就可以了
- ...from all processes :抓所有的请求
- ...from browsers only :只抓浏览器的请求
- ...from non-browsers only :只抓非浏览器的请求
- ...from remote clients only:只抓远程客户端请求
Fiddler 抓包简介
Fiddler想要抓到数据包,要确保Capture Traffic是开启,在File –> Capture Traffic。开启后再左下角会有显示,当然也可以直接点击左下角的图标来关闭/开启抓包功能。
需要能简单看懂Fiddler上的内容
更详细的使用,可以参考一篇写的很不错的文章 参考博客
上述横着的红色框
名称 |
含义 |
---|---|
抓取HTTP Request的顺序,从1开始,以此递增 |
|
Result |
HTTP状态码 |
Protocol |
请求使用的协议,如HTTP/HTTPS/FTP等 |
Host |
请求地址的主机名 |
URL |
请求资源的位置 |
Body |
该请求的大小 |
Caching |
请求的缓存过期时间或者缓存控制值 |
Content-Type |
请求响应的类型 |
Process |
发送此请求的进程:进程ID |
Comments |
允许用户为此回话添加备注 |
Custom |
允许用户设置自定义值 |
下面竖着的红色框
好了,文章到此结束了~~大家Fiddler用起来吧
下一篇,将写一下如何爬取儿歌多多APP
欢迎关注微信公众账号
- BZOJ 2463: [中山市选2009]谁能赢呢?(新生必做的水题)
- 10个Python面试常问的问题
- 关关的刷题日记11——Leetcode 1. Two Sum 方法2、3
- 计蒜客:百度的科学计算器(简单)【python神解】
- 关关的刷题日记12——Leetcode 189. Rotate Array 方法1、2、3
- 关关的刷题日记13——Leetcode 414. Third Maximum Number
- 关关的刷题日记14——Leetcode 167. Two Sum II - Input array is sorted
- 51Nod 1083 矩阵取数问题(矩阵取数dp,基础题)
- 【专知-关关的刷题日记15】Leetcode 27. Remove Element 方法1、2、3
- [接口测试 - 基础篇] 07 来来来,一起读写excel玩玩之一
- 时间序列分析算法【R详解】
- 【专知-关关的刷题日记16】Leetcode 88. Merge Sorted Array
- [接口测试 - 基础篇] 06 好吧也来解析下html
- [接口测试 - 基础篇] 05 好讨厌的xml解析
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 深入理解JVM虚拟机---垃圾回收与内存分配
- rxjs pipe和filter组合的一个实际例子的单步调试
- SAP Spartacus基于travis的持续集成
- Angular里如何测试一个具有外部依赖的Component
- Angular Component的DOM单元测试
- 对具有依赖的Angular服务进行单元测试的几种方式
- 使用TestBed测试具有依赖关系的Angular服务
- 使用jasmine.createSpyObj测试具有依赖关系的Angular服务
- 使用setup函数替代beforeEach函数进行Angular单元测试
- 对Angular使用了HttpClient的服务进行单元测试
- Elasticsearch中什么是 tokenizer、analyzer、filter ?
- ElasticSearch Snowball token filter
- Hibernate入门篇(三)——编写第一个Hibernate例子
- RabbitMQ与Kafka选型对比
- Hibernate进阶篇(三)——transaction简介