1、什么是fiddler

Fiddler是⼀个http协议调试代理⼯具,它能够记录并检查所有电脑和互联网之间的http、https、stp等通讯,它⽀持IE、Chrome、FireFox等等浏览器,可以在phone、pad等移动设备进⾏连接不仅可以做web端也可以做移动端的数据抓取
缺点:
①他只支持http、https、stp等通讯协议的数据其他的协议不支持
②无法请求响应超过2G的数据

2、fiddler简介

2.1fiddler的安装

fiddler的下载:下载链接
双击安装包,安装很简单跟qq一样,安装完毕后自己找到安装目录创建快捷方式(他不会自动再桌面上生成快捷方式)

2.2fiddler的基本设置

2.2.1fiddler应用程序的配置



和我选择一样的即可

2.2.2fiddler服务器代理的配置


新建完毕点击创建其余按照默认选项不用动


点击switchyomega选择刚设置的情景

2.3fiddler的介绍

①界面简介

②会话列表的简介

会话列表图标简介

③常规操作
在fiddler里面一共有2种流模式缓存模式(刷新完加载)、流模式(边刷新边加载)
如何设置断点
1 图形界面(拦截所有请求)
2 命令行设置断点可指定url①bpu + url② bpafter+url
清除断点①bpu ②bpa

2.4fiddler的配置(抓取app的数据前的步骤)

①配置模拟器:我以夜神模拟器为例
打开模拟器,点击设置点击属性设置选择开启桥接模式,点击安装驱动(为了获取当前环境网络中的ip地址),之后选择保存设置,点击重启模拟器


②修改模拟器中的手机设置
点击修改网络之后,选择高级选择代理选择手动,然后将本机的ip地址输入(电脑的内网ip,win系统在DOS中输入ipconfig就可以查看到),将fiddler的端口号输入,点击保存


③配置fiddler,选择tools中的options点击https选择from remote client让他只抓取远程客户端的数据包,避免分析数据包的时候太过凌乱

④在模拟器中安装证书

忘了截过程图,直接给证书命名点击安装就好了,他让设置密码就设置密码就行,直到出现如下图片就成功安装证书了

2.5使用fiddler抓取豆果美食app的数据

需求:要抓取豆果美食中的菜谱分类中的热门中的红烧肉中的做过最多次数的红烧肉的数据抓取(代码提供完整的,主要是数据包分析的过程一通百通,如果你学会了帮我点个赞谢谢)
①打开豆果美食app,它的数据包都会以douguo.net的形式返回所以只需要找对应域名,找到后会自动标黄,在黄标中查找我们想要的数据

②定位到想要的数据点击解码去除乱码,将json结果通过json.cn转化为可看懂字符串查找想要的数据信息(想爬什么数据就要通过这种方法区分析api)在右侧区域查看request以及response头文件,相当于浏览器的开发者工具,就是通过这些头文件来编写代码的



③找到数据包后在pycharm中编写代码获得数据(注释我写在代码中)

'''
request的所有数据
POST http://api.douguo.net/recipe/flatcatalogs HTTP/1.1 post请求方式,只需要url即可
client: 4
version: 6922.2
device: MI 6
sdk: 22,5.1.1
imei: 863254010240033
channel: zhuzhan
mac: F0:03:8C:C2:AD:3F
resolution: 1280*720
dpi: 1.5
android-id: f0038cc2ad3f4318
pseudo-id: cc2ad3f4318f0038
brand: Xiaomi
scale: 1.5
timezone: 28800
language: zh
cns: 0
carrier: CHINA+MOBILE
imsi: 460072400314019
user-agent: Mozilla/5.0 (Linux; Android 5.1.1; MI 6  Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36
reach: 1
newbie: 1
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Cookie: duid=66254911
Host: api.douguo.net
Content-Length: 68
以上皆为request携带的数据包我们以data字典形式传入请求当中
client=4&_session=1602856798953863254010240033&v=1503650468&_vs=2305 这个是post请求的表单数据
'''
import requests
from multiprocessing import Queue  # 进程池之间的通信
import pymongo  # 连接mongo将下载的数据保存到mongo中header = {"client": "4","version": "6922.2","device": "MI 6","sdk": "19,4.4.2","imei": "863254010448503",  # 系统设置的国际移动设备识别码,就是手机序列号"channel": "qqkp",# "mac": "44:85:00:5E:5B:28","resolution": "720*1280","dpi": "1.5",# "android-id": "4485005e5b281516",# "pseudo-id": "05e5b28151644850","brand": "Xiaomi","scale": "1.5","timezone": "28800","language": "zh","cns": "3","carrier": "CMCC",# "imsi": "460074485009491","user-agent": "Mozilla/5.0 (Linux; Android 4.4.2; MI 6  Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36","reach": "1","newbie": "1",# "lon": "116.568176",# "lat": "26.997867",# "cid": "361000","Content-Type": "application/x-www-form-urlencoded; charset=utf-8","Accept-Encoding": "gzip, deflate","Connection": "Keep-Alive",# "Cookie": "duid=57158696","Host": "api.douguo.net",# "Content-Length": "68",
}def big_variety():url = 'http://api.douguo.net/recipe/flatcatalogs'data = {"client": "4",# "_session": "1537295931652863254010448503",# "v": "1503650468","_vs": "2305",}result = requests.post(url, headers=header, data=data).json()for every_item in result['result']['cs']:  # 遍历热门、蔬菜、肉类大全...for every in every_item['cs']:  # 遍历家常菜、下饭菜...for item in every['cs']:  # 遍历上层目录中的内容# print(item)  # 整个菜谱分类中的每道菜都会被遍历且打印出来data_detail = {"client": "4",# "_session": "1537295931652863254010448503","keyword": item['name'],"order": "3","_vs": "400",}queue.put(data_detail)  # 将详细列表的data以队列的方式存入# print(queue.qsize())  # 结果是517说明总过有517道菜def detail_variety(data_detail, mong):print('当前爬取菜的名称为:', data_detail['keyword'])detail_url = 'http://api.douguo.net/recipe/v2/search/0/20'response = requests.post(detail_url, data=data_detail).json()for every_item in response['result']['list']:caipu = {}caipu['shicai'] = data_detail['keyword']if every_item['type'] == 13:  # 只拿tyoe等于13的数据,广告等数据type不同,避免拿错数据caipu['caipu_name'] = every_item['r']['n']caipu['user_name'] = every_item['r']['an']caipu['shicai_id'] = every_item['r']['id']caipu['describe'] = every_item['r']['cookstory']caipu['zuoliao_list'] = every_item['r']['major']# print(caipu)  # 拿到了20条数据little_url = 'http://api.douguo.net/recipe/detail/' + str(caipu['shicai_id'])little_data = {"client": "4",# "_session": "1537295931652863254010448503","author_id": "0","_vs": "2803","_ext": '{"query":{"id":' + str(caipu['shicai_id']) + ',"kw":' + caipu['shicai'] + ',"idx":"4","src":"2803","type":"13"}}',}res = requests.post(little_url, headers=header, data=little_data).json()caipu['tips'] = res['result']['recipe']['tips']caipu['cook_step'] = res['result']['recipe']['cookstep']print('当前入库的菜谱是:', caipu['caipu_name'])mong.insert_item(caipu)  # 调用数据库中自定义的方法保存数据else:continueclass ConnectMongo():  # 创建一个mongodb类def __init__(self):self.client = pymongo.MongoClient(host='127.0.0.1', port=27017)# 定义数据库和集合的名字self.db = self.client['douguo']['item']def insert_item(self, item):self.db.insert(item)if __name__ == '__main__':queue = Queue()  # 创建进程队列detail = big_variety()mong = ConnectMongo()  # 实例化数据库传入要保存的队列中detail_variety(queue.get(), mong)  # 以爬取20道菜为例queue.close()# for i in range(20):# 将队列中所有的菜系全部取出,爬取细节逻辑没写#         detail_variety(queue.get(), mong)

python爬虫二十三:使用fiddler抓取app数据(三)相关推荐

  1. 利用Fiddler抓取APP数据

    利用Fiddler抓取APP数据 简杨君 关注 2016.11.03 18:51* 字数 368 阅读 762评论 0喜欢 2 软件:Fiddler 系统:Windows10 手机:MX4 PRO F ...

  2. 网络爬虫-神器fiddler抓取app数据

    才接触爬虫的时候,我们通常使用的是浏览器的开发者工具-F12里的NetWork对网页进行抓包,但是这有一个缺点,就是如果网页加载了很多乱七八糟的东西,比如广告啊,各种各样的js之类的时候,NewWor ...

  3. Python3.x+Fiddler抓取APP数据

    随着移动互联网的市场份额逐步扩大,手机APP已经占据我们的生活,以往的数据分析都借助于爬虫爬取网页数据进行分析,但是新兴的产品有的只有APP,并没有网页端这对于想要提取数据的我们就遇到了些问题,本章以 ...

  4. fiddler设置中文版本_Python3.x+Fiddler 抓取 APP 数据

    随着移动互联网的市场份额逐步扩大,手机 APP 已经占据我们的生活,以往的数据分析都借助于爬虫爬取网页数据进行分析,但是新兴的产品有的只有 APP,并没有网页端这对于想要提取数据的我们就遇到了些问题, ...

  5. Fiddler抓取APP数据包实践教程

    本章节教程,主要介绍一下如何,抓取手机上的app数据. 为了详细介绍整个配置过程,本文使用MuMu模拟器来演示整个过程. 目录 一.安装模拟器软件 二.安装APP软件 三.Fiddler设置远程抓包步 ...

  6. 自动抓取app数据技术方案总结

    在app运营过程中,有时候我们需要了解app中的一些数据,比如:我们自己开的网店,有时候app官方提供的数据并不能满足我们的实际需求,这时就需要使用工具来自动抓取我们自己店铺中有用的数据.一般有两种实 ...

  7. Python网络爬虫,pyautogui与pytesseract抓取新浪微博数据,OCR

    Python网络爬虫,pyautogui与pytesseract抓取新浪微博数据,OCR方案 用ocr与pyautogui,以及webbrowser实现功能:设计爬虫抓取新浪微博数据,比如,抓取微博用 ...

  8. python爬虫教程,带你抓取百度的高清摄影图片

    python爬虫教程,带你抓取百度的高清摄影图片 源码分享: ''' 在学习过程中有什么不懂得可以加我的 python学习交流扣扣qun,934109170 群里有不错的学习教程.开发工具与电子书籍. ...

  9. Python 逆向抓取 APP 数据

    今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...

  10. iOS—网络实用技术OC篇网络爬虫-使用java语言抓取网络数据

    网络爬虫-使用java语言抓取网络数据 前提:熟悉java语法(能看懂就行) 准备阶段:从网页中获取html代码 实战阶段:将对应的html代码使用java语言解析出来,最后保存到plist文件 上一 ...

最新文章

  1. EUV光刻机全球出货量达57台
  2. caffe 安装方法和记录
  3. E - 秋实大哥与战争
  4. 浙江理工大学2019年1月赛
  5. 几种常见的电话光端机连接图以及电话光端机的连接方式
  6. 通过stream去重_stream去重
  7. 某物流集团企业信息化案例介绍
  8. 2.精通前端系列技术之JS模块化开发-深入学习seaJs(四)
  9. 解决oracle11g连接失败 ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
  10. 计算两个正整数的最大公约数
  11. Npm(包管理工具)
  12. cmmi证书查询(cmmi认证查询网站)
  13. C#一种简单处理假死的方法
  14. Android 如何判断萤石云视频是否可以播放
  15. 苹果手机解绑微信支付教程
  16. 最小链覆盖——Dilworth定理
  17. 小米路由器3c 虚拟服务器,小米路由器3C上不了网怎么办?
  18. 符合信创的政务部门的OA办公系统?用开源平台来搭建一个吧!
  19. vue可视化拖拽组件模板,vue组件拖拽自定义界面
  20. chrome linux依赖包,[WebDriver]Linux/Docker下安装Chrome浏览器和ChromeDriver

热门文章

  1. java 时间换算_时间换算java实现
  2. PMPtiku项目管理第六版项目的复杂性
  3. 计算机组装图解,电脑组装图解
  4. 组件用.vue还是.js_适用于qart.js的vue 2.x的组件
  5. 陕西省本级城镇企业退休人员 - 人脸识别APP资格认证操作指南
  6. linux硬盘坏了无法查看分区,Linux 磁盘坏道检测和修复 查看硬盘坏道代码
  7. 怎么安装python的数据库5.7.28_Windows下mysql-5.7.28下载、安装、配置教程
  8. 学习计算机基础必读的4本经典入门书籍,自学编程必备书单!
  9. C语言入门-跑步问题
  10. 有多少程序员干到35岁,那么其他人去干什么了?