网络数据抓包 整理总结

 在开发过程中,我们经常会碰到需要抓取网络接口请求数据来进行调试或者接口对接的情况,有时候某些金融行业的前端或者APP过检也会对APP进行抓包分析,所以在这里简单做一下整理,方便日后复习。

一、常用的抓包工具

抓包工具有很多,小到最常用的web调试工具Firebug,达到通用的强大的抓包工具Wireshark。为什么使用 Fiddler?原因如下:

(1) Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大。模拟http请求的功能也不够,且 Firebug 常常是需要“无刷新修改”,如果刷新了页面,所有的修改都不会保存。

(2) Wireshark是通用的抓包工具,但是比较庞大,对于只需要抓取http请求的应用来说,似乎有些大材小用。

(3) Httpwatch 也是比较常用的http抓包工具,但是只支持IE和 firefox浏览器(其他浏览器可能会有相应的插件),对于想要调试chrome浏览器的http请求,似乎稍显无力。

(4) Fiddler 是一个使用本地 127.0.0.1:8888 的 HTTP 代理,任何能够设置 HTTP 代理为 127.0.0.1:8888 的浏览器和应用程序都可以使用 Fiddler,Fiddler 可以将网络传输发送与接受的数据包进行截获、重发、编辑、转存等操作。

二、Fiddler抓包工具的使用

(1)原理

Fiddler是位于客户端和服务器端的HTTP代理,也是目前最常用的http抓包工具之一 。 它能够记录客户端和服务器之间的所有 HTTP请求,可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。

既然是代理,也就是说:客户端的所有请求都要先经过Fiddler,然后转发到相应的服务器,反之,服务器端的所有响应,也都会先经过Fiddler然后发送到客户端,基于这个原因,Fiddler支持所有可以设置http代理为127.0.0.1:8888的浏览器和应用程序。使用了Fiddler之后,web客户端和服务器的请求如下所示: 

 Fiddler 作为系统代理,当启用 Fiddler 时,IE 的PROXY 设定会变成 127.0.0.1:8888,因此如果你的浏览器在开启fiddler之后没有设置相应的代理,则fiddler是无法捕获到HTTP请求的。

下面再看下Fiddler 是怎么抓取移动端设备的数据包的,先来说说移动设备怎么去访问网络,看了下面这张图:

image

 可以看得出,移动端的数据包,都是要走wifi出去,所以我们可以把自己的电脑开启热点,将手机连上电脑,Fiddler开启代理后,让这些数据通过Fiddler,Fiddler就可以抓到这些包,然后发给路由器(如图):

image

(2)使用方法

先贴下载地址:

Fiddler 下载地址

不过这个貌似只有30天试用期,需要的可以自己找找破解版,我是用联想电脑管家上面的软件商店直接装的,好像没这个问题。

先看一下 Fiddler 抓取到的数据包:

 解释一下这些圈红的地方什么意思:

名称

含义

#

抓取HTTP Request的顺序,从1开始,以此递增

Result

HTTP状态码

Protocol

请求使用的协议,如HTTP/HTTPS/FTP等

Host

请求地址的主机名

URL

请求资源的位置

Body

该请求的大小

Caching

请求的缓存过期时间或者缓存控制值

Content-Type

请求响应的类型

Process

发送此请求的进程:进程ID

Comments

允许用户为此回话添加备注

Custom

允许用户设置自定义值

图标

含义

clip_image001[13]

请求已经发往服务器

clip_image002[4]

已从服务器下载响应结果

clip_image003[4]

请求从断点处暂停

clip_image004[4]

响应从断点处暂停

clip_image005[4]

请求使用 HTTP 的 HEAD 方法,即响应没有内容(Body)

clip_image006[4]

请求使用 HTTP 的 POST 方法

clip_image007[4]

请求使用 HTTP 的 CONNECT 方法,使用 HTTPS 协议建立连接隧道

clip_image008[4]

响应是 HTML 格式

clip_image009[4]

响应是一张图片

clip_image010[4]

响应是脚本格式

clip_image011[4]

响应是 CSS 格式

clip_image012[4]

响应是 XML 格式

clip_image013[4]

响应是 JSON 格式

clip_image014[4]

响应是一个音频文件

clip_image015[4]

响应是一个视频文件

clip_image016[4]

响应是一个 SilverLight

clip_image017[4]

响应是一个 FLASH

clip_image018[4]

响应是一个字体

clip_image019[4]

普通响应成功

clip_image020[4]

响应是 HTTP/300、301、302、303 或 307 重定向

clip_image021[4]

响应是 HTTP/304(无变更):使用缓存文件

clip_image022[4]

响应需要客户端证书验证

clip_image023[4]

服务端错误

clip_image0244

会话被客户端、Fiddler 或者服务端终止

再看一下右侧工具栏我们常用的几个地方:

 这里面,我使用最多的就是 Inspectors 和 Fiters 了,关于 Fiters 啰嗦两句:

勾选左上角的Use Filters开启过滤器,这里有两个最常用的过滤条件:Zone和Host

1、Zone 指定只显示内网(Intranet)或互联网(Internet)的内容:

2、Host 指定显示某个域名下的会话:

 如果框框为黄色(如图),表示修改未生效,点击红圈里的文字即可

修改完后可以点击右上角的 Actions ,里面有个立即生效

(3)遇到的问题

a. Android 高版本手机抓包 报SSLHandshakeException异常问题

使用Fiddler抓HTTP/HTTPS包,Android7.0以后https抓包失败问题

原因:在Android 6.0 (API level 23)及以前,APP默认信任系统自带的CA证书以及用于导入的CA证书,Android 6.0 (API level 23)以后,APP默认只信任系统自带的CA证书,对于用户导入的不予理会。Google也给出了办法,怎么在Android7.0及以后的系统中,让APP信任我们手工导入的CA证书。方案如下:

解决方案:

在编译APK之前,在你的Android项目的res文件夹下创建xml文件 [net_security_config.xml] 内容为:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config xmlns:android="http://schemas.android.com/apk/res/android">
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" overridePins="true" />
            <certificates src="user" overridePins="true" />
        </trust-anchors>
    </base-config>
</network-security-config>

然后在AndroidManifest.xml中的application标签下添加

android:networkSecurityConfig="@xml/net_security_config.xml"

编译安装,然后该APP就信任用户添加的CA证书,从而Fiddler就可以抓到它的HTTPS包并解密内容。

Fiddler 抓包详细教程(建议收藏)

Fiddler抓包工具总结(建议收藏)

Fiddler实现手机抓包——小白入门

Fiddler(一) - Fiddler简介

三、Wireshark抓包工具的使用

暂时还没详细学习,后续补充

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值