精华内容
下载资源
问答
  • 抓包精灵是一款系统辅助的工具应用,针对安卓手机https网络请求的一个抓取以及解析,可以自动的保存http和https请求,而且不需要ROOT,可以进行悬浮窗功能设置允许同时去使用要抓的应用以及观看抓包的结果还能抓取...
  • 做为一个测试人员,工作中经常会用到数据抓包工具来进行数据分析和验证,下面就简单介绍一下工作中常用的抓包工具。TcpDump抓包Tcpdump是一个用于截取网络分组,并输出分组内容的工具。它凭借强大的功能和灵活的截取...

    做为一个测试人员,工作中经常会用到数据抓包工具来进行数据分析和验证,下面就简单介绍一下工作中常用的抓包工具。

    TcpDump抓包

    Tcpdump是一个用于截取网络分组,并输出分组内容的工具。它凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。 可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息,只有具备root权限的用户才可以直接执行它来获取网络上的信息。

    1、配置抓包环境

    1)下载TcpDump

    下载地址:http://www.strazzere.com/Android/tcpdump

    2)配置ADB命令

    a)使用Terminal在当前用户目录下新建一个.bash_profile文件用以配置环境变量

    $ touch .bash_profile

    $ open .bash_profile

    b)修改.bash_profile文件添加adb路径

    export PATH=${PATH}:/Users/Pa

    th/Android/sdk/platform-tools

    export PATH=${PATH}:/Users/ Path/Android/sdk/tools

    c)验证ADB命令

    $ adb version

    01uVRaX52eR2

    d)将下载后的TcpDump push 到/system/etc目录下,该目录保存的都是系统的配置文件

    $ adb push /Users/Path/tcpdump /system/etc

    01uVRaXB7y7G.small

    注:如果遇到个别机型无法push可以使用mount命令挂起system目录

    3)Android设备获取Root权限

    这里可以使用市面上常见的一些一键Root工具对手机解锁Root权限。

    如:Root大师、Root精灵等等

    4)配置Wireshark

    a)Mac上使用Wireshark运行需要安装X11

    http://www.xquartz.org/

    下载完成以后打开XQuartz-2.7.8.dmg选择XQuartz.pkg,继续安装即可

    01uVRacXFV2P.small

    b)安装Wireshark

    https://1.na.dl.wireshark.org/os

    x/Wireshark%202.0.2%20Intel%2064.dmg

    下载完成以后安装Wireshark打开Wireshark 2.0.2 Intel 64.pkg继续安装即可

    01uVRace3drZ.small

    2、使用TcpDump抓包

    抓包步骤

    01uVRadWhTSY.small

    1)连接Android设备

    $ adb shell

    01uVRaddwzBd

    2)TcpDump 抓包命令

    $ tcpdump -p -vv -s 0 -w /sdcard/tcp/tcpdump.pcap

    01uVRadjyYgY.small

    命令参数

    # -p 不将网络接口设置成混杂模式

    # -vv 输出详细的报文信息

    # -s 0捕获整个包

    # -w 直接将分组写入文件中,而不是不分析并打印出来

    3)抓包结束后将生成的.pcap文件拷贝到PC上

    $ adb pull /sdcard/tcp/tcpdump.pcap

    01uVRai4qE8S

    3、使用Wireshark 进行数据分析

    使用Wireshark打开.pcap文件即可

    01uVRaifhiJq.small

    展开全文
  • 大家可能都听说过一个名词,“抓包”。比如软件开发前后端联调,调用后端接口无反应,这时我们常常会说:“抓个包看看前端传递的数据吧”。又或者我们的网站接入 CDN 之后,想要看一下网站静态资源的缓存时间和自己...

    大家可能都听说过一个名词,“抓包”。比如软件开发前后端联调,调用后端接口无反应,这时我们常常会说:“抓个包看看前端传递的数据吧”。又或者我们的网站接入 CDN 之后,想要看一下网站静态资源的缓存时间和自己设置的缓存策略是否一致,也会用到抓包。那什么是抓包呢?

    主机之间的数据通信都是通过网络来进行传输,而将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,就是抓包。

    抓包经常被用来进行数据截取与观察,用于获取 HTTP 标头、内容、大小等信息来进行分析,对判断软件的 Debug 很大的帮助。所以,学会抓包,对于排查一些网络问题十分重要。

    主流抓包工具对比

    先来简单看下有哪些常见的抓包工具,主要有下面几种:

    • Charles

    • Fiddler

    • WireShark

    • TcpDump

    • Chrome Network

    其中目前主流的抓包工具有:TcpDump、WireShark、Fiddler,下面我们对这几个抓包工具的性能进行一些简单的对比。

     1. TcpDump

    Android 平台下的网络数据抓包工具,Android模拟器中自带 TcpDump 文件。

    用 TcpDump 对网络数据抓包,手机不用走代理——将网络数据包添加到 WireShark 中分析即可。

    缺点:

    • 手机必须获取 root 权限;

    • 不能查看实时通信数据——因为抓取的是 dump 出来的文件,而不能实时数据交互;

    • 获取的数据很多,分析时需要过滤出真正有用的信息。

    2. WireShark

    PC 端截获、分析通过该网卡的所有网络通信的数据包(针对移动端时候,就要对移动端设置代理服务器)强大的工具,完整查看网络中的每层、每个协议、每个数据包的详细组成信息;TCP、UDP、HTTP、HTTPS 等协议的数据包均可获取;

    缺点:

    • 获取的信息太多,需要手动过滤、进行分析。

    • 只能查看,不能修改、重发送网络数据包。

    3. Fiddler

    HTTP 协议的代理工具,抓取、分析电脑中所有进出该网卡、与网络进行数据交互的数据(针对移动端抓包时,需要设置代理服务器),主要针对的是 HTTP/HTTPS 协议;能够清晰查看数据包中的内容——HTTPS中的数据包可以解密出来。

    缺点:

    • 只适用于一次请求,下次请求需要重新设定

    • 手动修改需要花费时间,如果程序等待超时,本次设定的 Response 结果失效

    Chrome Network 抓包介绍

    上文中可以看到主流的抓包工具都或多或少地存在缺点,那有没有一款界面简单、易操作,可以非常方便的查看网页中所有的网络请求,并审核检查单个资源的属性,比如 HTTP 标头、内容、大小等的抓包工具呢?

    Chrome Network 就可以做到。Chrome Network 是属于 Chrome DevTools 套件中的一个调试工具,下面我来对它的使用做一个简单介绍。

    注:本篇教程适用于使用 Chromium 内核的浏览器,Microsoft Edge 和 Firefox 也有类似的控制面板,在此不再赘述。

    如何打开开发者工具面板

    1. 使用快捷键打开。

    • Control+Shift+J     或者 F12     (Windows)

    • Command+Option+J     (Mac)

    2.通过 [更多工具] - [开发者工具] 打开。

    a6475ad1ee3fb77c134e909844ec26a3.png

    打开开发者工具后,切换到 [Network 面板],面板的构成可查看下图:

    b226c655b0dcb8011f4bcbc4b0d201ca.png

    • 控制器:可以开启/关闭 Network 工具的网络活动记录功能,以及其它一些配置选项。

    • 过滤器:过滤请求列表中显示资源。

    • 概览:以图形化的方式,显示 HTTP 请求响应的时间轴。

    • 请求列表:网页中每一个资源请求记录,默认时间排序,点击可查看详细信息。

    • 概要:包含了当前抓取的请求数,传输大小以及传输耗时等信息

    接下来我们就来认识一下各个模块。

    控制器

    175b27bd063d13663fde27afa8e25b96.png

    从左至右按钮的功能依次是:

    • 停止/开始抓包,红色圆圈代表正在抓包;

    • 清除请求列表中的所有请求;

    • 屏幕截图;

    • 隐藏/显示过滤器窗格;

    • 查找搜索;

    • 增大请求列表每一行的行高;

    • 隐藏/显示概览窗格

    • 按照框架来整合资源

    • 跨页面加载保存请求

    • 停用浏览器缓存

    • 模拟离线访问

    • 模拟慢网速访问,可自定义网速

    我们简单的来体验一下其中几个功能的使用。

    场景一:如何模拟在本地没有缓存的情况下访问网页?

    我们可以打开控制器的 [Disable cache] 功能,重新刷新页面,浏览器会模拟不带缓存的请求访问,保证每一个请求都是向网络中发起的。

    3c81832608e2ff6caf9910b3e64a8e3a.gif

    场景二:请求列表只记录当前页面的访问请求,如果点击了一个超链接,跳转到另一个网页,这样就会清空之前的记录。能否在点击链接跳转之后,依旧保存之前的请求记录呢?

    我们可以打开控制器的 [Preserve log] 功能,这样在点击链接跳转到新的页面后,跳转前的请求记录依旧会保留,方便我们跟踪请求响应。

    3f58ed80302a5058d5db3f4d3b9fe257.gif

    过滤器

    我们在访问一个网站的时候,可能会有几十个或者上百个请求,这些请求中有些是我们关心的,有些是我们不需要的,这个时候就可以快速的使用过滤器来筛选出我们关心的那些请求。

    过滤器常见的过滤方式就是按类型过滤。

    dd96916adfa5568592e5feb0b7cd4729.png

    默认过滤中已经内置几种类型,比方说我们可以筛选出 JS 类的请求、图片类的请求或者是WebSocket 类型的请求,按住 [Ctrl(Windows)] 或者 [Command(Mac)] 可以同时选择多个过滤类型。

    那么 [Hide data URLs] 选项是什么意思呢?

    网站开发者很多时候会将一些小的图片或者 CSS 脚本,以 BASE64 格式嵌入到 HTML 中,以减少 HTTP 请求数。当勾选了 Hide data URLs 选项后,就可以隐藏掉请求列表中的像 data: 或者 blob: 类请求。

    737357021a5001f185c0197132e02396.gif

    除了以上几个 Chrome 提供的过滤器以外,还可以非常灵活的在过滤框中使用过滤属性进行请求日志的筛选。

    常见的过滤属性可参考下表。

    属性

    释义

    domain

    仅显示来自指定域的资源,可以使用通配符(*)指定多个域

    das-response-header

    显示包含指定 HTTP 响应头的资源

    is

    使用[ is:running ] 可以查找 WebSocket 资源,[ is:from-cache ] 可以查找缓存读取资源

    lager-than

    显示大于指定大小的资源(以字节为单位)。将值设定为 1000 等同于设置为 1k

    method

    显示指定 HTTP 方法类型资源

    mime-type

    显示指定 MIME 类型的资源

    status-code

    仅显示指定的 HTTP 状态代码响应资源

    场景一:打开又拍云官网的时候,我们想筛选网页中来自于不同域名的请求资源,就可以在过滤框中输入 [domain:] ,Chrome 会帮我们自动补齐相关的域名信息。cfaeb98bcccac766102604fad1d1416e.gif

    场景二:打开的网页中,如何查看哪些请求使用了缓存?使用命令 [is:from-cache] 

    b857e480ac92dafcfba0370a508eb99f.gif

    请求列表

    请求列表默认是按照资源请求发起的时间升序排列的,我们也可以选择按指定列排序,例如 [Waterfall] 列上右键,按照活动时间来进行排序。

    62b0ea8596a5de8fc45e089a25162656.gif

    请求列表中默认每列的含义为:

    • Name:请求资源的名称

    • Status      HTTP:状态码

    • Type:请求资源的 MIME 类型

    • Initiator:发起请求的对象或进程

    • Size:服务器返回的响应大小(包括头体和包体),可显示解压后大小

    • Time:总持续时间,从请求的开始到接收响应中的最后一个字节

    • Waterfall:各请求相关活动的直观分析图

    我们也可以添加其它的一些列目录,在请求列上右键呼出菜单,可看到更多列选项。

    2c3702b38fb38dbb02b53b3017afd40b.png

    此外我们也可以配置自定义列,在请求列上右键呼出菜单-Response Headers- Manage Header Columns 中添加想列出的响应头信息。

    3f10cdfabecc564a7e276bb15bd60556.png

    场景:如何自定义显示请求经过了CDN 的哪些节点?

    CDN 会在每一个响应头中添加上Via 响应头,那么我们就可以自定义请求列表显示 Via 列。

    25cd1466483848fc4ddb1af0635a8de7.gif

    HTTP 请求与响应

    点击请求列表中的具体的请求,则可以打开请求内容详情,在内容详情中我们可以执行以下操作:

    • 查看 HTTP 请求/响应头部

    • 查看 cookie

    • 预览响应正文,例如查看图像

    • 查看响应正文

    • 时间详细分布

    • 将请求数据复制到剪贴板

    • 查看未压缩的资源大小,Use Large Request Rows

    场景一:查看请求的响应与请求报文

    972c3e1e9b4f25fb9766c1eeaa5c5e82.png

    场景二:预览图片

    b8d7b005f0e986cb23ef6f3036bf5fe4.png

    场景三:将一个请求导出为 cURL 命令

    在请求上右键呼出菜单,选择 Copy 选项。

    f5a8cea7ac47f494c3d06fefca1e76e2.gif

    以上就是对 Chrome 的 Network 面板的介绍,通过一些场景来帮助大家理解使用面板的功能。相比起 Wireshark 等一些网络抓包工具而言,Chrome Network 更为简单易用,查看 HTTP/2 或者 HTTPS 等请求报文也更为方便,对于前端展示或者网络连接产生的一些问题,定位也更为轻松快捷。

    deepin是一个致力于为全球用户提供美观易用、安全稳定的Linux发行版,支持全球33种语言,累计下载量超过8000万次,拥有遍及6大洲33个国家的105个镜像站点,在国际Linux发行版排行榜中稳居前十。

    a56382128794e81f4240b5b987fb8bbc.png

    展开全文
  • 不能抓包的原因Android7.0 之后默认不信任用户添加到系统的CA证书:To provide a more consistent and more secure experience across the Android ecosystem, beginning with Android Nougat, compatible devices ...

    不能抓包的原因

    Android7.0 之后默认不信任用户添加到系统的CA证书:

    To provide a more consistent and more secure experience across the Android ecosystem, beginning with Android Nougat, compatible devices trust only the standardized system CAs maintained in AOSP.(文档链接)

    也就是说对基于 SDK24 及以上的APP来说,即使你在手机上安装了抓包工具的证书也无法抓取 https 请求

    解决方案:

    一、官方解决方案(需修改APP代码,so 没什么鬼用......)

    二、将抓包软件的证书安装成系统证书(需ROOT)

    1、root手机 (小米root教程)

    3、将charles证书保存到电脑上(重命名成getssl.crt)

    2cc47ee6aafb

    WX20191224-155137@2x.png

    4、 依次执行以下命令

    openssl x509 -inform PEM -subject_hash_old -in getssl.crt | head -1 //得到类似字符串:f8ccc956

    cat getssl.crt > f8ccc956.0

    openssl x509 -inform PEM -text -in getssl.crt -out /dev/null >> f8ccc956.0

    adb push /Users/lianwu/Documents/f8ccc956.0 /system/etc/security/cacerts/f8ccc956.0

    //把生成好的文件放入手机的 /system/etc/security/cacerts 目录下

    5、成功后可在系统证书中看到导入的证书:(小米手机路径:设置->密码、隐私与安全->系统安全->加密与凭据->信任的凭据->系统)

    如果在系统证书没有找到导入的证书,请继续往下看:

    trouble shooting

    1、执行步骤4时,部分手机即使root后,/system分区也不能push文件(remote couldn't create file: Read-only file system),需要将system盘remount成可读写模式:

    依次执行下面的命令:

    adb shell

    su //获取su权限

    mount -o rw,remount /system //remount成可读写

    mount -o ro,remount /system //在push完文件后恢复成只读

    2、对于小米手机即使完成了以上操作也会出现在成功push了文件后,没有提示任何错误,但是用ls -a找不到push的文件。

    这是由于小米手机即使在获取了root权限后,/system分区依然没有解锁,因此我们还需要解锁/system分区

    方法: (查看教程第三步:解锁system)

    建议在酷安app搜索syslock,下载后一键解锁,或者直接使用下面的adb命令:

    adb root

    adb disable-verity

    解锁完成后,再将证书push到系统证书目录中。

    展开全文
  • 资料包含视频+文档+工具,主要目的使用fiddler抓包工具实现购物商品的价格进行幕来进行支付
  • Fiddler是一个http调试代理,它能 够记录所有的你电脑和互联网之间的http通讯,Fiddler 可以也可以让你检查所有的http通讯,设置断点,以及Fiddle 所有的“进出”的数据(指cookie,html,js,css等文件,这些都可以让...
  • Android手机上对https请求进行抓包

    万次阅读 多人点赞 2021-05-23 12:01:42
    前段时间跟QQ群里的群友聊天时无意聊到了抓包的话题。抓包可以说是程序员日常开发调试问题的一个重要手段,可以帮助我们理清客户端与服务器之间的数据传输问题,以便于甩锅。 在过去,网络请求基本都是靠的http协议...

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。

    前段时间跟QQ群里的群友聊天时无意聊到了抓包的话题。抓包可以说是程序员日常开发调试问题的一个重要手段,可以帮助我们理清客户端与服务器之间的数据传输问题,以便于甩锅。

    在过去,网络请求基本都是靠的http协议,那个时候的抓包是一件非常简单的事情。然而这几年,http协议在逐渐被淘汰,几乎所有的网络请求都变成了https协议,这就使事情变得复杂了。

    群里一位朋友说,https是不可能被抓包的,不然怎么保证https传输的安全性,毕竟那么多大公司都在用这个协议来传输重要的数据。

    这其实是一个比较有意思的话题,https确实是非常安全的。但同时,https也确实是可以抓包的,它们两者之间并不冲突。

    考虑到仍然有许多朋友在这方面还有些不太了解,我准备写两篇文章来讲讲https抓包的相关知识。本篇文章先讲实践,教大家如何在Android手机上对https请求进行抓包。下一篇文章会讲原理,我们一起解析一下,为什么如此安全的https协议却仍然可以被抓包呢?

    那么先从实践看起吧。

    抓包工具的使用

    要对网络请求进行抓包,首先肯定要选择一个抓包工具才行。

    专业的抓包工具有很多,根据我的观察,国内的大多数开发者都比较喜欢用Charles这个工具来进行抓包。不过我个人更喜欢用Fiddler这个工具,而且我们平时工作时如果要进行抓包也都是用的Fiddler。因为Fiddler和微软内部的日志分析工具是相互兼容的,并且Fiddler的作者也在微软工作。

    那么本篇文章我都会以Fiddler这个工具来进行举例讲解,当然如果你习惯用Charles也完全没有问题,只是在工具的操作上可能会有所区别,原理是完全相同的。

    首先需要在你的电脑上安装Fiddler,这个工具是完全免费的,下载地址是:

    https://www.telerik.com/fiddler/fiddler-everywhere

    安装完成之后登录一下就可以使用了,它会自动抓取你当前这台电脑上的所有网络请求包。

    但是如果我们想要抓取手机上的网络请求,那么还需要做点额外的配置才行。

    首先从Fiddler顶部工具栏依次点击View -> Preferences -> Connections,将会看到如下所示界面:


    这里有两点需要注意,一个是端口号,默认值是8866,如果没有什么特殊需求的话可以不用修改。

    第二个是Allow remote computers to connect这个选项是一定要勾上的,不然手机上的网络请求将无法抓到。

    勾上第二个选项,点击SAVE,这样电脑端的配置就完成了。

    接下来我们还需要在手机端进行一些简单的配置。

    要确保的是,你的手机和用于抓包的这台电脑必须在同一个局域网下。

    然后修改手机当前连接Wifi的高级选项,将代理类型改为手动,将代理主机名改成电脑的ip地址,将代理端口改成8866,如下图所示:

    点击保存即可。

    完成以上配置之后,其实我们就可以使用Fiddler来对手机上的网络请求进行抓包了。不信你可以试一试在手机的浏览器上访问以下地址:

    http://guolin.tech/api/china/

    应该会看到如下界面:

    然后再到Fiddler中查看一下,你就能发现刚才手机上的网络请求包已经成功被Fiddler抓到了(有时Fiddler中显示的包信息过多,不方便查看,可以使用Ctrl+X清空信息):

    可以看到,这条网络请求的所有细节在Fiddler中一览无余,包括请求的头信息,响应的头信息,响应的body内容等等。

    抓包工具将网络通讯的背后细节全部搬到了台面上,这样当客户端和服务器遇到联调问题时,到底是客户端的锅还是服务器的锅,看一看抓出来的包就全部清楚了。

    以上就是抓包工具最传统的用法,然而这种用法现在已经不那么好使了,因为还在使用http协议的网络请求已经越来越少,绝大部分的网络请求都变成了https协议。

    对https请求进行抓包

    https协议是一种加密传输的网络协议,所传输的数据不再是以明文的方式来传输,而都是加密过后再进行传输的。

    这种协议保障了用户的数据安全,但对于抓包而言却是一件苦恼的事情。因为数据都加密了呀,我们抓到的包也都是一些密文信息,所以根本就无法用于定位问题。

    比如我们可以尝试在手机浏览器中访问一下必应,然后观看Fiddler中抓到的包信息,如下图所示:

    可以看到,Fiddler虽然能够捕获到访问必应的网络请求,但是却无法解密出具体的传输内容,这种包对于我们分析问题并没有任何帮助。

    那么对于https请求的网络包我们到底要怎么抓呢?别担心,Fiddler是支持这个功能的,下面跟着我一步步操作就行。

    首先需要在Fiddler中开启https抓包功能,从Fiddler顶部工具栏依次点击View -> Preferences -> HTTPS。

    在HTTPS设置页面中,先点击Trust root certificate来安装证书,然后勾选Capture HTTPS traffic选项,如下图所示:

    点击SAVE保存,这样你就可以抓到电脑上https请求的包了。

    但是手机上https请求的包我们还是抓不到的,你可以试试再次在手机上访问必应,将会看到如下界面:

    出现这种错误基本都是证书的原因导致的,在下篇文章中我会详细分析这个错误出现的原因,本篇文章中我们先将它解决就好了。

    在你的手机浏览器中访问如下地址:

    http://ipv4.fiddler:8866/

    将会看到一个由Fiddler内置的网页:

    点击FiddlerRoot certificate这个链接,下载并安装由Fiddler提供的手机证书。

    安装完成之后再次访问必应,你就会发现不会再报错了,而是可以正常显示出网页的内容:

    然后观察Fiddler,可以看到,请求必应首页的网络包也被成功抓到了,而且这次不再是密文,而是解密后的数据:

    对https请求的抓包问题,就这样解决了!

    对Android应用进行抓包

    如此看来,https抓包貌似也并不是一件难事。

    没错,但还有一个细节需要大家注意。上述方案只适用于对浏览器中的网络请求进行抓包,如果你是想要对其他应用程序的网络请求抓包的话,仍然还是抓不到的。

    为了证实这一点,我们就来新建一个应用程序,并编写一段最简单的网络请求代码,看看到底能不能抓到它发出的网络请求。

    整个程序非常简单,我们在MainActivity中加入一个按钮,当点击按钮时就发起一个网络请求,代码如下所示:

    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            val button: Button = findViewById(R.id.button)
            button.setOnClickListener {
            	sendRequest()
            }
        }
    
        private fun sendRequest() {
            thread {
                var connection: HttpURLConnection? = null
                try {
                    val response = StringBuilder()
                    val url = URL("https://www.bing.com")
                    connection = url.openConnection() as HttpURLConnection
                    val input = connection.inputStream
                    val reader = BufferedReader(InputStreamReader(input))
                    reader.use {
                        reader.forEachLine {
                            response.append(it)
                        }
                    }
                    Log.d("TAG", response.toString())
                } catch (e: Exception) {
                    e.printStackTrace()
                } finally {
                    connection?.disconnect()
                }
            }
        }
    
    }
    

    没错,总共就这么多代码。但是不要忘记我们还得在AndroidManifest.xml中声明网络权限:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.capturetest">
    
        <uses-permission android:name="android.permission.INTERNET" />
        ...
    
    </manifest>
    

    好了,现在来运行一下程序看一看效果吧。点击界面上的按钮,会向必应主页发起一条网络请求,然后观察Fiddler中的数据包:

    可以看到,我们是无法像之前在浏览器中那样,成功抓到并解析出https请求的包信息的。

    为什么会这样呢?这是因为Android在7.0系统中进行了一项安全升级。从Android 7.0系统开始,只是在手机上安装了抓包工具的证书,仍然是无法对https请求进行抓包的,还必须要在应用程序的代码中加入一段网络安全配置才行。

    这项升级使得每个应用程序都变得更加安全,因为对https抓包确实是一个比较危险的行为,所有加密传输的数据都以明文的形式展示出来了。当然,如果是为了调试程序而抓包,这算是一个正当理由,但是你也理应只能对自己的程序进行抓包调试而已。如果只要在手机上安装了证书就可以对所有App的https请求进行抓包,那么无疑大大降低了这些App的安全性。

    因此,Android 7.0系统中才做了这项安全升级。默认情况下,我们无法对各个App的https请求进行抓包,如果你是想要对自己App的https请求抓包的话,那么可以这样做。

    在res/xml目录下创建一个network_security_config.xml文件,然后加入如下配置:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true">
            <trust-anchors>
                <certificates src="user"/>
                <certificates src="system"/>
            </trust-anchors>
        </base-config>
    </network-security-config>
    

    接下来还需要在AndroidManifest.xml中配置android:networkSecurityConfig属性来让上述配置生效:

    <application
        ...
        android:networkSecurityConfig="@xml/network_security_config">
        ...
    </application>
    

    这样我们就可以对当前的应用程序发出的https网络请求进行抓包了。

    重新运行一下程序,让我们再来试试吧,结果如下图所示:

    结果正如我们预期的那样工作了。

    最后一个小疑惑

    那么本篇文章的内容到这里就差不多该结束了。

    但是不知道大家有没有产生一个小疑惑,既然是从Android 7.0开始必须要在自己的应用程序中加入网络安全配置才能对https请求抓包,为什么我们一开始在浏览器中什么都没配,却也成功抓到了https请求的网络包呢?

    这个问题其实让我困惑了很久,直到现在加入了微软Edge项目组才终于解开了这个疑惑。

    Edge是一款基于Chromium内核的浏览器,Chrome也是,许多主流的浏览器都是。其实答案一直都在Chromium的源码中,只是我之前从来没有勇气去看过。

    我们来查看一下Chromium源码中的AndroidManifest.xml文件,部分代码如下图所示:

    可以看到,Chromium的源码中也加入了一段android:networkSecurityConfig配置,那么我们继续跟进去看看里面到底配置了什么:

    这不是和我们刚才在Demo中配置的内容一模一样吗?

    自此真相大白了,原来之所以浏览器不需要做额外的配置也能对https请求进行抓包,是因为Chromium源码中已经对此做好了配置,而所有基于Chromium内核的浏览器也就都自动拥有了这个功能。

    如果你想要在线查看Chromium的源码,可以访问这个地址:

    https://source.chromium.org/

    好了,本篇文章的内容就到这里。相信看完这篇文章,会对大家平时的网络开发与调试工作产生一定的帮助。

    解决了怎么用的问题,接下来就要去了解原理了。下篇文章中我们来一起探讨一下为什么传说中如此安全的https协议却仍然可以被抓包呢?点击这里继续阅读下篇文章

    另外,如果想要学习Kotlin和最新的Android知识,可以参考我的新书 《第一行代码 第3版》点击此处查看详情

    关注我的技术公众号,每个工作日都有优质技术文章推送。

    微信扫一扫下方二维码即可关注:

    展开全文
  • fiddler是位于客户端和服务器端之间的代理,也是目前最常用的抓包工具之一 。 它能够记录客户端和服务器之间的所有 请求,可以针对特定的请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改...
  • 抓包步骤将Android手机与电脑USB相连,打开windows命令提示符窗口将tcpdump程序copy至android手机(该命令前面那个目录文件为本地地址,后面那个目录为目的手机端地址)C:\android-sdk-windows\platform-tools>...
  • Fiddler手机抓包 第一步:配置Fiddler Tools->Fiddler Options... 重启Fiddler 第二步:在手机上安装证书 用手机浏览器打开http://10.240.139.173:8888(IP是你电脑的IP,8888是Fiddler的端口) 在页面上...
  • 但是有个限制,就是抓包的机器必须获取了root权限。所以,遇到未root的手机,tcpdump就无能为力了。那如何抓未root的手机的包呢?方法就是:手机连路由,抓路由的包,过滤出手机的包(好吧,曲线救国也挺好的不是么)-...
  • 本人第一个Android程序,支持抓包(pcap)和对抓包文件进行分析(只支持http分析,自动解压gzip), 本程序无广告,无恶意代码, 如果不能用请告知手机信息和具体问题....手机抓包工具V2.0 pyhttpcap-master
  • 【抓包工具】 Charles 的 安装配置(手机抓包
  • 抓包工具】Fiddler 的 安装配置
  • 传送门: Mac抓包工具—— Charles相关总结 【承上篇】Charles(翻到了自己总结的笔记,算是上个的延展版吧) ...三、fiddler手机抓包: (1)、允许远程的客户端进行连接; (2)、设置过滤; (3)、iph
  • 抓包工具Fiddler抓取手机包和修改接口数据 安装成功界面 点击Tools->Options 弹出该页面 Allow remote…勾选上,意思为允许远程计算机连接,端口随意设置(默认8888) 进入cmd,windows系统下输入...
  • ...花瓶"... Charles是一个抓包工具是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,Charles可以监控浏览器发送和接收的所有数据。它允许一个开发者...
  • 安卓手机抓包方法归纳总结

    万次阅读 2019-07-17 16:25:44
    安卓手机抓包方法归纳总结 最近需要对安卓应用发出的网络数据进行抓包分析,除了常见的HTTP还包括MQTT协议。 本文总结归纳了。手机端抓包的各种方法和思路 0x01 wireshark方案 在PC端抓过包的人一定不会对Wireshark...
  • 这里给大家提供抓包工具...步骤如下:1:下载本文附件内的安装包 (安卓的)需要安装证书,然后 打开微信跳一跳,关闭 除微信跟抓包软件外的其他全部软件。点击开始抓包按钮,微信随便跳几下 死掉就行了。2:点开捕...
  • Android系统手机抓包方法

    千次阅读 2018-07-13 14:07:40
    抓包准备 1. Android手机需要先获得root权限。一种是否获得root权限的检验方法:安装并打开终端模拟器(可通过安卓市场等渠道获得)。在终端模拟器界面输入su并回车,若报错则说明未root,
  • 抓包工具:tcpdump是linux下的抓包工具,在android中没有,需要下载对应的工具。下载地址:https://www.androidtcpdump.com/android-tcpdump/downloads使用方法:通过adb放到对应的目录:adb push tcpdump /data/...
  • 是一种针对于移动流量劫持而开发的手机抓包软件,可以视为是Android版的“ Fiddler”主要功能包括:手机端抓包,PING / DNS / TraceRoute诊断,抓包HAR数据上传共享使用前请确保手机HTTP代理的关闭 功能简介 1。 ...
  • app手机抓包工具

    2021-12-18 11:01:58
    fiddler 和 charles 两个抓包的区别 Fiddler和Charles的功能大同小异,基本上都是抓包、断点调试、请求替换、构造请求、代理功能;主要区别:Fiddler只能运行在Windows平台,而Charles是基于Java实现的,基本上...
  • 移动端手机抓包工具小助手

    万次阅读 2019-06-20 14:01:44
    最近移动端项目中用了weex框架,页面打断点得时候开了本地服务,内存变得有些紧张了,如何通过抓包工具快速得到服务端返回的信息呢,通过查阅发现了个方便的小助手,下面请看详细的流程: 下面介绍一下关于抓包工具...
  • 手机抓包工具汇总【转】

    万次阅读 多人点赞 2019-02-13 11:36:03
    现在的开发者当真是非常幸福,因为抓包工具已经非常成熟了。 在移动设备上抓包,需要下面几个方面的配合: 移动设备支持; 代理服务器; 分析工具。 初级工具 先说个抓 HTTP(HTTPS) 包的例子算是入门啦。 移动...
  • charles是 MAC上最好用的抓包工具.charles 网上的参考文档已经很多,我就不再赘述啦.只是说说我在安装过程遇到的问题和解决方法,仅供参考.charles抓包的数据中的中文内容显示乱码,网上很多是通过修改 info.plist 文件...
  • 1.安装安全证书 Help->...2.手机设置代理服务 (安装charles电脑和手机处在同一个网络) Help->SSL Proxying->Install Charles Root Certificate on a Mobile Device or Remote Browser ...
  • 本人第一个Android程序,支持抓包(pcap)和对抓包文件进行分析(只支持http分析), 本程序无广告,无恶意代码 更新内容: ... 说明: 1.请确认你的手机已ROOT 或者 能够在电脑上连接ADB ...手机抓包工具V2.0 pyhttpcap-master
  • 修改Android源码,解放HTTPS抓包

    千次阅读 2019-09-23 17:24:22
    基本的几个思路寻求一个适合自己的办法如何改Android源码准备工作分析源码修改相关源码刷机验证 为什么HTTPS不能抓包了? Google在Android 7.0以后的版本中,添加了“网络安全配置(Network security configuration...
  • 我之前虽然也也用过Charles进行过抓包,不过一年半载后就忘记怎么操作了,这几天去网上翻文章,重新捋流程,踩了一些坑,浪费一堆事件才重新掌握最基础的抓包操作(时间已溜走,只剩两行泪)。为了防止以后再忘,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,197
精华内容 2,878
关键字:

安卓手机抓包改包工具