本文介绍的是如何使用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

 

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

posted @ 2016-01-17 14:30 AnyDrew 阅读(1566) 评论(0) 推荐(0) 编辑
摘要: ResideMenu菜单 课堂笔记:https://github.com/SpecialCyCi/AndroidResideMenuGithub:如何使用开源组件1. 下载 下载方式: 1. 项目首页右下角"Download ZIP"按钮 2. 安装Git,git clone:git地址2.... 阅读全文
posted @ 2015-11-26 10:59 AnyDrew 阅读(559) 评论(0) 推荐(0) 编辑
摘要: ListAdapter是一个整个Activity有且仅有一个ListView控件的Activity使用步骤:1. 创建MyListViewAdapter(类名可以自定义) extends ListAdapter2. 实现setContentView布局,布局文件中必须有一个android:id="@... 阅读全文
posted @ 2015-11-24 19:51 AnyDrew 阅读(5999) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2015-11-02 17:26 AnyDrew 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 我的目的是做一个带有TextView的ListView列表页面。以下是这个页面的xml: 以下是这个页面的head.xml: 可以看到我设置了head.xml宽高都是match_parent,而不给Include设定宽高,那么相当于给Inc... 阅读全文
posted @ 2015-10-31 18:39 AnyDrew 阅读(2216) 评论(0) 推荐(0) 编辑
摘要: 今天听了一在线公开课,任务是做一个数字时钟,其中最关键的自然是获取当前的系统时间。做个简单的记录,如下:1.Time time = new Time("GMT+8");time.setToNow(); //Sets the time of the given Time object to the c... 阅读全文
posted @ 2015-09-24 21:53 AnyDrew 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 【编程环境】Visual Studio 2010, NET4.0【开发语言】C#, 理论上VB.NET等依赖.NET Framework框架的语言均受此影响【问题描述】使用HttpWebRequest抓取网页内容,但首次请求总是莫名奇妙的阻塞在Request.GetResponse();上,不过一旦... 阅读全文
posted @ 2015-05-22 10:16 AnyDrew 阅读(3726) 评论(0) 推荐(0) 编辑
摘要: 啥都不说,先上效果图:这是一个网上的第三方组件,原版是php的,我用.NET重写了图片上传的处理,下面贴上代码using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.I... 阅读全文
posted @ 2015-02-01 13:57 AnyDrew 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 今天朋友问了我一个奇怪的需求:项目中要求图片上传到工作目录,上传后要在网页中通过显示出来。图片上传后显示,在开发中常见的做法是将它图片上传到网站目录下(upload/),如果保存到别的目录(如:d:/upload),再用 是找不到图片的。想到了两种解决方法:第一种:给路径加上"file://" (... 阅读全文
posted @ 2015-01-31 18:07 AnyDrew 阅读(3272) 评论(0) 推荐(0) 编辑
摘要: 无刷新分页要用到自己定义的存储过程:alter proc usp_DivMemberByPage@pageIndex int,@pageSize int,@total int output //注意:这里不要忘记outputasbegin select * from ( s... 阅读全文
posted @ 2014-12-04 19:21 AnyDrew 阅读(239) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示