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

工具

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

环境配置

第一步:笔记本联网

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

第二步:设置 Fiddler

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

第三步:获取局域网 IP

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

第四步:设置 Genymotion 代理

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

HTTP请求:

请求处理模型

请求报文格式

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

请求格式为:

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位数字组成,表示请求是否被理解或被满足,用来至此自动操作;原因分析是对原文的状态码作简洁的描述,用来供用户使用。

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

  • 1XX:信息响应类,表示接收到请求并且继续处理。
  • 2XX:处理成功响应类,表示动作被成功接收、理解和接收
  • 3XX:重定向响应类,表示为了完成指定的动作,必须接受进一步处理
  • 4XX:客户端错误,表示客户请求包含语法错误或不能正确执行
  • 5XX:服务端错误,表示服务器不能正确执行一个正确的请求

分析”卖座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

更多相关文章

  1. 【Android(安卓)开源系列】之网络请求框架
  2. Fresco集成Okhttp3
  3. android 从顶层到底层 学习笔记--- framework架构
  4. android 父类中添加Button问题
  5. 【白话】App从启动到页面显示出来发生了什么
  6. Android中的签名
  7. 请求网络数据后更新视图
  8. java.io.IOException: Cleartext HTTP traffic to xxx.xxx.xxx.x
  9. Android使用ListView构造复杂页面,并响应点击事件,通过intent跳转

随机推荐

  1. PHP数组遍历与Javascript数组遍历的区别
  2. 07-12 作业
  3. php第一天的作业
  4. 演绎PHP 和 JavaScript 遍历数组
  5. php 之循环
  6. PHP0802第一次作业提交
  7. php遍历数组与js遍历数组的区别
  8. 0802作业
  9. 0802-演绎php遍历数组与js遍历数组的区别
  10. 简单的选显卡和懒加载