本文介绍的是如何使用Fiddler工具抓取Android应用的HTTP协议的数据包

工具

  • Genymotion模拟器
  • 笔记本电脑一台(Win7)
  • Fiddler(v4.6.2),下载地址:http://pan.baidu.com/s/1sjW9geT

环境配置

第一步:将笔记本电脑连接网络(有线和无线均可)

第二步:在Fiddler中设置“允许远程连接”和“默认端口”

第三步:打开“控制面板”-“网络和Internet”-“网络连接”,选中当前的活动连接,找到局域网IP地址。

第四步:设置Genymotion中的模拟器代理IP地址为192.168.1.8(上一步记录的IP),设置完后记得保存

HTTP请求:

1.  请求处理模型

2. 请求报文格式

请求行、通用信息头、请求头、实体头、报文主体

如下:

请求格式为

Method【分隔符】Request-URI【分隔符】HTTP-Version【换行】

其中:Method是请求方法,类似的方法有GET、POST、DELEFT、PUT、HEAD...常用的方法是GET、POST,GET和POST区别在于:

1、GET通过URLParams传值,POST通过报文体传值(通过Content-Type请求头分辨内容类型,常用的有:application/json,text/plain,text/html,image\png...)

2、GET传递的值不能大于2kb,POST理论上不限制大小,实际大小和服务器配置有关。

3、GET的参数很容易被看见故安全性较低,POST参数不容易被看见故安全性较高(一般用于传输用户的身份信息,常用表单、登录等)

常见的请求字段的含义:

1. HOST: 该请求的目标主机

2. ACCEPT: 客户端可接受的内容类型

3. USER-AGENT: 用户代理,一般是浏览器的信息(很多统计网站如cnzz, 51la, 就是用这个搜集用户访问数据)

4. ACCEPT-ENCODING: 可接受的编码(Android端就是用这个实现gzip压缩,优化网络请求,推荐)

5. REFRER:来源,该请求是哪个页面发起的(一般网站用这个字段实现防图片盗链,只要REFRER中的主机不是本网站,挂断请求)

3. 响应报文的格式

状态行   通用信息头   响应头   实体头   报文主体

状态行由状态码和原因分析两部分构成。其中,状态码由3位数字组成,表示请求是否被理解或被满足,用来至此自动操作;原因分析是对原文的状态码作简洁的描述,用来供用户使用。

响应报文中的状态码在进行Web应用性能测试的过程中经常遇到,说明如下:

1XX:信息响应类,表示接收到请求并且继续处理。

2XX:处理成功响应类,表示动作被成功接收、理解和接收

3XX:重定向响应类,表示为了完成指定的动作,必须接受进一步处理

4XX:客户端错误,表示客户请求包含语法错误或不能正确执行

5XX:服务端错误,表示服务器不能正确执行一个正确的请求

4. 分析”卖座APP“的请求结构

通过上述的配置,我们用Fiddler抓取到了Splash页面的请求:

http://mobileif.maizuo.com/ver4/city/37/ADInfo?agentID=baidu&channelID=31&clientID=31&revision=4.2.5&agentID=baidu

从该请求可以简单获取以下信息:

1. 该请求使用的是POST, HTTP1.1

2. 卖座接口启用了gzip优化网络请求

3. 内容长度为211个字节,并且支持UTF-8

本文待完善,如有问题,请多多指教。

Android抓包分析-fiddler版的更多相关文章

  1. *android抓包工具——fiddler抓包分析api接口

    本文地址:http://blog.csdn.net/u011733020 首先,写这个仅仅是为了学习.不是要做什么违法的事情,假设有问题,有关部门 请联系我,立刻删除. 不要查我水表. 正题:这里介绍 ...

  2. Android抓包工具Fiddler抓取数据

    1.手机端设置 2.Fiddler设置监听 Tools/Fiddler options 是否允许监听到https(Fiddler默认只抓取http格式的),首次点击会弹出是否信任fiddler证书和安 ...

  3. python爬虫(3)——用户和IP代理池、抓包分析、异步请求数据、腾讯视频评论爬虫

    用户代理池 用户代理池就是将不同的用户代理组建成为一个池子,随后随机调用. 作用:每次访问代表使用的浏览器不一样 import urllib.request import re import rand ...

  4. Android抓包方法(一)之Fiddler代理

    Android抓包方法(一) 之Fiddler代理 前言: 做前端测试,基本要求会抓包,会分析请求数据包,查看接口是否调用正确,数据返回是否正确,问题产生是定位根本原因等. 不管是之前做HTML5手机 ...

  5. Android抓包方法 之Fiddler代理

    1.抓包原理 Fiddler是类似代理服务器的形式工作,它能够记录所有你的电脑和互联网之间的http(S)通讯,可以查看.修改所有的“进出”的数据.使用代理地址:127.0.0.1, 默认端口:888 ...

  6. [转]【HTTP】Fiddler(二) - 使用Fiddler做抓包分析

    本文转自:http://blog.csdn.net/ohmygirl/article/details/17849983 上文( http://blog.csdn.net/ohmygirl/articl ...

  7. [转] Android实时抓包分析 : 善用adb调试桥

    Android实时抓包分析 : 善用adb调试桥   谈到android网络抓包,很多人都能想到牛逼轰轰的神器tcpdump.方法就是在android机器上面安装tcpdump,然后通过-w参数把抓包 ...

  8. 【HTTP】Fiddler(二) - 使用Fiddler做抓包分析

    上文( http://blog.csdn.net/ohmygirl/article/details/17846199 )中已经介绍了Fiddler的原理和软件界面.本文主要针对Fiddler的抓包处理 ...

  9. Android 抓包并通过 Wireshark 分析

    分析 Android 中 app 的网络数据交互,需要在 Android 上抓包,常用工具为 tcpdump ,用 tcpdump 生成 Wireshark 识别的 pcap 文件,把 pcap 文件 ...

随机推荐

  1. 吴裕雄 python 机器学习——半监督学习标准迭代式标记传播算法LabelPropagation模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import metrics from sklearn import d ...

  2. 实战【docker 镜像制作与使用】

    一.制作docker 镜像 使用spring boot 构建一个简单的web 项目,返回 “Hello,World ”字符串,使用 Maven 打成 jar 包,使用的Linux 环境是 Centos ...

  3. nodejs的req取参req.body,req.params,req.query

    1/req.query: Get:/domo?name=ximiximi&blog=https://home.cnblogs.com/u/ximiximi-blog/ app.get('/do ...

  4. console.log 如何打印对象

    问题描述: var obj={a:1,b:2}; console.log(obj); 控制台返回的值是object. 解决方案: console.log(JSON.stringify(obj))

  5. Mybatis 元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id*,result*,association*,collection*,discriminat

    <resultMap id="BaseResultMap" type="com.youotech.tl_cons_credit_rating.entity.TL_C ...

  6. ubuntu mysql新增用户并开启远程连接

    1.首先用root用户登录mysql mysql -u root -p 输入密码后登录成功 2.新建用户 use mysql; select host,user from user;(查看现有用户) ...

  7. Linux内核5.6亮点

    导读 当我们还在体验 Linux 5.5 稳定发行版带来更好的硬件支持时,Linux 5.6 已经来了.我将在本文中重点介绍 Linux 5.6 发布版中值得期待的关键更改和功能. 说实话,Linux ...

  8. 洛谷P1131 时态同步

    题意: 给一个n点的树,每条边都有边权,问从根出发需要增加多少长度,使得最终的儿子到根的距离是一样的 思路: 上来一个思路wa了3次,看完题解之后,又一次豁然开朗…… orz #include< ...

  9. Java常量/变量

    1. 常量 /* 常量:在程序运行期间,固定不变的量. 常量的分类: 1. 字符串常量:凡是用双引号引起来的部分,叫做字符串常量.例如:"abc"."Hello" ...

  10. linux查看公网ip的方法

    curl ifconfig.me 或者 curl cip.cc