精华内容
下载资源
问答
  • MAC 抓包

    千次阅读 2018-09-25 10:26:56
    网络抓包是个基础技能,对于网络协议的掌握有一定的要求。iOS上实现网络抓包可以用Charles(针对http和https),tcpdump(快速分析网络包),和Wireshare。之前写过一篇介绍tcpdump抓包的入门文章,和tcpdump相比,...

    网络抓包是个基础技能,对于网络协议的掌握有一定的要求。iOS上实现网络抓包可以用Charles(针对http和https),tcpdump(快速分析网络包),和Wireshare。之前写过一篇介绍tcpdump抓包的入门文章,和tcpdump相比,Wireshark提供丰富的GUI交互,而且能分析所有的网络协议,关键还是免费的,掌握好Wireshark就能应付绝大部分需要分析网络协议的场景了。

    安装初识

    Wireshark提供Mac版本,可以从官网下载安装,到这篇博客为止最新版本应该是2.2.1。安装好之后打开的第一个界面如下:

     

    Wireshark在第一个界面就把当前系统所包含的网卡列出来了,直接点击任何一项就可以开始监听通过该网卡的所有网络流量。

    当我们把iPhone通过usb连接macbook时,Wireshark并不能直接监听通过iPhone的网络流量,需要通过一个系统程序在我们的Mac系统上,建立一个映射到iPhone的虚拟网卡,在terminal中输入如下命令即可:

     

    格式是rvictl -s [设备udid],设备的udid可以通过itunes或者itools获取,执行命令之后Wireshark能立即识别新增加的rvi0网卡,也就是上图中高亮的部分,双击rvi0这一项,Wireshare即进入如下界面开始监听iPhone设备上的所有流量。使用完毕之后rvictl -x[设备udid]断开链接。

     

    此时,启动iPhone上的任意App,只要有网络流量产生,对应的网络包都会在Wireshark上述的列表中展示出来。

    Wireshark的流量监控界面主要分为四块,由上至下第一部分(标号为1)是工具栏,通过工具栏我们可以控制监控的行为,比如开始抓包,停止抓包,重新开始抓包,以及在包之间跳转等等。工具栏的底部有个输入框,可以让我们手动输入包的过滤条件,这部分对于熟练使用Wireshark抓包非常重要,后面会详细的讲解。

    第二部分(标号为2)是历史流量包列表展示界面,这里展示的是从抓包开始,所有通过我们iPhone设备的流量。列表界面不同的包有不同的颜色,Wireshark通过颜色来区分包的类型,对于特定场景快速识别目标流量非常有用,后面也会专门讲解。

    第三部分(标号为3)是单个包的详细信息展示面板,我们在第二部分选中的网络包在这一部分会将其结构以可阅读的文本形式展示出来,要正确阅读这一部分的信息需要对tcp/ip协议有一定的掌握。

    第四部分(标号为4)是单个包的二进制流信息展示面板,这一部分展示的信息是包的原始数据,也是一个网络包所包含内容的真实展现,我们在第三部分多选中的协议头,都会在这一部分以同步高亮的形式标记出来。这一部分的展示是为了让我们对包的真实内容做直观的判断,能具体到单个byte。

    初步认识上述四块主要面板之后,可以尝试开始分析网络包,在开始分析网络包之前,先要对网络包有个大致的概念。

    网络包结构

    我们最初学习网络协议的时候,无论是OSI七层模型,还是经典的TCP/IP五层结构,都是以下图中的左边部分的形式展示的。

     

    这是一种经典的分层架构,确实也符合网络协议设计上的思路,但却不能表达网络包真实的包含关系。上图右边部分是我所绘制的一个包结构示意图。在我看来,这种洋葱式的结构更符合网络包的真实形态。Application是最内层的payload,除了Application这一层之外,其他层都是用自己这一层的协议header+所包含那一层的payload。可以用如下公式表示:

    TCP Layer = TCP Header + Application Payload

    IP Layer = IP Header + TCP Payload

    ...

    我们分析每个网络包的时候要能理解每一个包它所代表的抽象含义,再进一步将相关联的包串联起来,形成一次完整的网络会话。

    分析包结构

    对于iOS程序员来说,我们绝大部分的流量分析都集中在HTTP或者基于TCP的socket长连接。从这一层面来说,和我们最贴近的三层是应用层(http),传输层(tcp or udp),网络层(ip)。

    对于应用层来说主要是http协议的学习,对于http request和response格式的阅读,比如下图表示的一个http request包:

     

    Packet详情面板以符合http协议的表述,将header中各个field清晰的罗列出来了,阅读起来很方便。

    传输层我们应用较多的是tcp,这一层的阅读主要是tcp header的学习:

     

    典型的tcp header一般长度为20个字节,将这20个字节逐一学习一遍就可以分析大部分的tcp流量了。

    网络层的分析主要是针对于IP Header,header结构如下:

     

    这其中IP Header第十三个字节各个filed的理解,对于我们分析tcp流量的起始和结束尤其有用,典型的IPV4 Header也是20个字节,梳理一遍就可以分析IP包了。

    所以对于包结构的分析关键在于三个知识点的学习:http header, tcp header, ip header,这么一看好像也没多少东西 ;)

    使用Filter过滤包

    使用Wireshark和使用Charles最大的区别在于,Charles只捕获HTTP流量,而Wireshark捕捉的是经过目标网卡所有的流量,流量包可以在几秒内膨胀到难以阅读的数量,所以此时我们需要使用Filter来做包的过滤,Filter规则定的越细,剔除掉的干扰信息就越多,分析起来就越快。

    Wireshark的Filter分为两种,一种为Capture Filter,另一种是Display Filter。

    Capture Filter出现在初始界面,在网卡列表的上方有个输入框,允许我们输入capture filter,一旦输入了特定的capture规则,Wireshark就只捕获符合该规则的流量包了。

     

    Display Filter出现在流量监控界面,在工具栏的下方有个输入框,允许我们输入display filter,display filter只是从界面上过滤掉不符合规则的包,Wireshark实际上还是监听了这些包,一旦去掉display filter,所有的包又会出现在同一界面。

     

    Capture Filter的规则和我们平常使用tcpdump的filter语法是一致的,比如为了只监控http的流量,我们可以先在初始化界面选中rvi0网卡,再在capture filter输入框里输入:

    //只捕获HTTP流量
    port 80 or port 443

    回车之后Wireshark就开始监控我们iPhone上所有的http和https流量了 ,非常简单,我们还可以使用其他的capture filter来捕获特定的流量,比如想分析DNS解析过程,可以使用:

    //只捕获DNS流量
    port 53

    比如只想捕获和特定服务器相关的流量:

    //只捕获和特定主机的流量
    host 171.10.191.10

    Display Filter的语法是由Wireshark自定义的,和Capture filter的语法不能混用。比如我们只想看某个主机的流量,可以使用如下Display Filter:

    ip.addr==171.10.191.10

    如果只看http或者https的流量,可以用:

    tcp.port == 80 || tcp.port == 443

    更多的语法规则可以查看Wireshark官方文档,Wireshark实际上提供了便捷的UI操作帮助我们来书写Display Filter,在Display Filter输入框的最右边有个Expression按钮,点击之后可以弹出如下界面:

     

    Display Filter的语法本质上是个等是关系描述,我们可以在search当中输入我们感兴趣的协议比如http,再在展开的协议头里选择我们的条件比如http.host,最后设置Relation和Value就可以生成一个Display Filter条件了。

    包颜色规则

    Wireshark在大多数时候捕获的包数量都远超我们感兴趣的数量,而且各个连接的包都混杂在一起,为了方便我们识别不同的连接会话,Wireshark默认使用一种着色规则帮助我们来进行包类型区分。

    具体的规则可以通过菜单View->Coloring Rules...查看,默认规则如下:

     

    这里有个小技巧,如上图所示,我只将我感兴趣的协议包上了色,集中在http,tcp,udp包,这样分析起来更加直观。比如根据上图的规则,tcp三次握手中的Sync包是使用灰色标记的,这样我就可以在下图的包中迅速定位一次tcp连接的开始包位置:

     

    当然,包的颜色也可以按照自己的视觉习惯进行定制,我个人习惯把Sync包和FIN包设置一个高亮的颜色,方便判断一次HTTP会话的起始和结束。

    流量跟踪

    Wireshark默认情况下将不同网络连接的流量都混在一起展示,即使给不同协议的包上色之后,要单独查看某个特定连接的流量依然不怎么方便,我们可以通过Wireshark提供的两种方式来实现这个目标。

    方式一:Follow Stream

    当我们选中某个包之后,右键弹出的菜单里,有个选项允许我们将当前包所属于的完整流量单独列出来,如下图:

     

    Wireshark支持我们常见的四种Stream,TCP,UDP,HTTP,SSL。比如我们选中Follow TCP Stream之后可以得到如下的详细分析输出(样本为监控iPhone手机的流量):

     

    上图中将iPhone和Server之间某次的连接流量完整的呈现出来,包括iPhone发送了多少个包,Server回了多少个包,以及iPhone上行和下行的流量,还提供流量编解码选择,文本搜索功能等。

    方式二:Flow Graph

    Flow Graph可以通过菜单Statistics->Flow Graph来生成,这样我们可以得到另一种形式的流量呈现:

     

    和Follow Stream不同的是我们获取到的是完整的流量,从上图中可以看出从10.136.66.127(我的iPhone手机IP地址)发出的流向多个服务器的网络流量,包括DNS解析和SSL安全握手等。当然我们也可以在上图中下方的操作区域做进一步的过滤,可以使用Display Filter做进一步的流量定位。

    Follow Stream更适合分析针对某一个服务器地址的流量,而Flow Graph更适合分析某个App的整体网络行为,包含从DNS解析开始到和多个服务器交互等。

    其实Statistics菜单下还有更多的图表分析模式,可以根据不同的分析目标来选择,比如Statistics->HTTP->Requests可以得到如下按主机分门别类的HTTP请求分析图,和收费的Charles的展示结果类似。

     

    HTTPS包分析

    介绍完使用方式再来实际分析下HTTPS的流量。下图是我使用Wireshark在iPhone上抓包知乎App网络请求的结果:

     

    当我使用Follow TCP Stream之后,一次完整的HTTPS会话流量就被单独过滤出来了,第一步先分析包列表界面。

    通过高亮颜色找到会话的其实Sync包,继而可以快速的定位到HTTP建立连接之初的tcp三次握手所产生的三个包:

    Sync: iPhone发送Sync。

    Sync+Ack: Server发送Sync+Ack。

    Ack: iPhone Ack。

    三次握手之后是ssl handshake,ssl handshake分为以下几步:

    Client Hello

    这一个包是ssl握手的起始包,客户端(我的iPhone)会携带当前会话所依赖的一些关键信息:使用的tls版本(当前为tls1.2),上次的Session ID(如果可以session重用,就可以避免当前这次的安全握手),客户端所支持的加密算法套件(从下图中可以看出可以从22个suites里面挑选)等。

     

    Server Hello

    Server Hello这个包带上服务器这一端的一些信息,比如Server所选择的tls版本,或者带上可以重用的Session ID避免重新握手,在Client传过来的Cipher Suites当中挑选一个Cipher Suite进行后续的安全通话等。

     

    Server 下发Certificate

    Server同时会下发自己的Certificate,如下图所示:

     

    从包列表界面可以看出,Certificate(大小为2407个bytes)这个包由于超过了1440个字节,被拆成了2个包,所以我们可以在包Info里面看到[TCP segment of a reassembled PDU],我们使用Wireshark抓包的时候经常会看到reassembled PDU,出现这种情况是因为包太大,超过了MSS,需要拆成两个来发送。

    接下来几个包是Client和Server基于上面交换的信息协商最后使用的密钥。

    Server Key Exchange

    Client Key Exchange

    Change Cipher Spec

    ...

    Send Application Data

    各个包里面所包含的详细内容分析涉及到非对称加密算法的相关知识,这里就不展开了,使用Wireshark可以将整个HTTPS的握手过程非常清晰的展现出来,感兴趣的同学可以阅读这篇文章

    当然大部分时候我们需要分析iPhone上HTTPS流量里的具体包内容,Wireshark虽然支持配置RSA私钥,但我们没办法直接获取iPhone设备上各个App所使用的私钥,这种场景下我们一般使用MITM(Man In The Middle)中间人攻击来破解HTTPS包内容,收费工具Charles可以通过代理的方式来实现此功能,免费版抓包工具mitmproxy同样也可以,Charles的使用教程比较多了,后续我们会再写一篇mitmproxy的教程介绍如何使用破解调试HTTPS的流量。

    结束语

    Wireshark就介绍到这里,现在在iPhone上抓包的方式有很多,有面向所有协议的tcpdump和Wireshark,也有针对HTTP的Charles和mitmproxy,无论使用哪个工具,前提都是我们需要对网络协议有全面的认识,所以在学习使用这些工具的同时,要持续深入的学习网络协议知识。

    展开全文
  • Charles-Mac抓包

    2018-02-05 14:05:38
    Charles-Mac抓包工具,最新,好用,方便,http代理,Mac上的抓包首选工具,觉得好用可以去官网下载支持官方正品。
  • mac抓包工具paros

    2015-11-10 09:29:12
    mac抓包工具,抓包工具paros,只要将手机端和电脑端ip设置成一样就行了
  • mac抓包工具charles、charles4.6.1
  • charles mac 抓包工具 很好用
  • paros for mac 抓包工具

    2016-08-30 11:45:34
    最新的 paros for mac 抓包工具,安装好jdk就可以直接使用。
  • mac抓包工具破解版Charles_4.0.1 ,新版好用。下载后带解压密码
  • charles for mac抓包工具

    2018-10-17 10:43:16
    Charles其实是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。安装Charles的...
  • Mac 强大的抓包应用,正式注册非破解版,最新版本 4.2.7 亲测可用!
  • Mac 强大的抓包应用,正式注册非破解版,最新版本 4.2.6 亲测可用!
  • 20170612Mac抓包分析工具之Charles

    千次阅读 2017-06-12 15:51:13
    Mac 抓包分析工具之Charles Charles实现对Https进行抓包,使用的原理是中间人技术(man-in-the-middle),Charles会动态生成一个使用自己根证书签名的证书,Charles接收web服务器的证书,而客户端浏览器/客户端接收...

    Mac 抓包分析工具之Charles

    Charles实现对Https进行抓包,使用的原理是中间人技术(man-in-the-middle),Charles会动态生成一个使用自己根证书签名的证书,Charles接收web服务器的证书,而客户端浏览器/客户端接收Charles生成的证书,以此实现客户端和Charles之间建立Https连接,Charles和Web服务器之间建立Https连接,实现对Https传输信息的抓包。如果Charles根证书不被信任则无法建立Https连接,所以需要添加Charles根证书为信任证书。

    1.Mac安装Charles

    到官网下载Charles安装包,下载url,写这篇博文之时的最新版是4.1.2,下载后解压安装。

    2.Mac安装证书

    打开Charles,在Menu选择Help >SSL Proxying > Install Charles Root Certificate,
    打开launchpad > 其他 > 钥匙串访问,找到Charles Porxy CA,右键显示简介,在信任里面的使用此证书时和加密套接字协议层都选择”始终信任”。

    3.手机安装证书

    打开Charles,在Menu选择Help > SSL Proxying > Install Charles Root Certificate on a Mobile Device Remote Browser,根据弹出的提示在手机上下载证书,如果是Android设备,选择设置 > 更多设置 > 系统安全 > 从存储设备安装,选择刚才下载的证书进行安装

    4.手机配置代理

    要保证安装了Charles的Mac和我们的手机连接了同一个无线路由器,即处于同一个网段中,在手机上的WLAN中设置代理,ip和端口为第3步提示的IP地址和端口。

    5.开启SSL代理功能

    在Menu选择Proxy > SSL Proxying Setting,选中Enable SSL Proxying,在Location里添加要使用SSL代理的网站,端口为443,如果要匹配所有HTTPS网站,可输入*(一般不建议这样操作),然后就可以拦截Https数据包了。

    6.Charles破解

    4.1.2的破解包,下载地址,其他版本不保证可以破解成功。

    展开全文
  • 什么是charles? charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当浏览器连接Charles的代理访问互联网时,... 下载安装 ... 环境配置 设置MAC代理 点击工具栏Proxy->macOS Proxy 安装证书 下载证书 信任证
  • Mac 抓包软件(123).zip

    2019-06-14 19:39:08
    charles-proxy-4.2.5.dmg,抓包工具。可用于App调试,抓取App网络数据。
  • 非常适合mac ios系统进行抓包,分析数据接口,下载下来后将里面的jar包,替换Charles安装目录lib下面的同名jar包,即可完成
  • mac 抓包工具

    千次阅读 2014-08-14 14:29:38
    Cocoa Packet Analyzer http://www.tastycocoabytes.com/cpa/ Cocoa Packet Analyzer is a native Mac OS Ximplementation of a network protocol analyzer and packet sniffer. CPA supportsthe industry-sta

    Cocoa Packet Analyzer

    http://www.tastycocoabytes.com/cpa/

    Cocoa Packet Analyzer is a native Mac OS Ximplementation of a network protocol analyzer and packet sniffer. CPA supportsthe industry-standard PCAP packet capture format for reading, capturing andwriting packet trace files.

    这是我开始在做iphone的时候在网络上找到的一个很好用的简单的的抓包工具,我因为是tcp通讯,用这个足够了。

     

    Wireshark

    http://www.wireshark.org/download.html

    非常专业的抓包、分析工具,自不多说,是开源并且跨平台,各种协议通吃的工具,http,tcp都行,非常好的分析工具。我是觉得非常好用。

     

    Httpscoop

    http://www.tuffcode.com/index.html

    http协议,可惜是个收费的主,能找到破解版的也不错

     

    Charles Web Proxy

    http://www.charlesproxy.com/

    web开发的工具,貌似不适合手机开发使用,没试过。firefox插件httpfox应该也是。

     

    tcpdump

    最强大的是什么,当然是命令行了,和ssh配合,直接在手机上进行操作,真实环境测试,非常好用,可惜使用的门槛有点高,这里就不做详细介绍。


    fiddler

    Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。


    展开全文
  • Mac抓包工具—— Charles相关总结

    千次阅读 2019-09-07 14:09:59
    初识此抓包工具是在15年,最早关于此的一篇创建时间为2015年11月9日,后面每次换工作陆陆续续在新公司电脑上安装过几次, 在此...1、Mac上的抓包工具Charles:https://blog.csdn.net/jiangwei0910410003/article/de...

    初识此抓包工具是在15年,最早关于此的一篇创建时间为2015年11月9日,后面每次换工作陆陆续续在新公司电脑上安装过几次, 在此期间可谓是温故而知新,网上有很多现成的总结很到位的文章,我便偷了懒,没有重新总结,仅将这些链接一一记录在册,方便后续查看。

    转载:
    1、Mac上的抓包工具Charles:https://blog.csdn.net/jiangwei0910410003/article/details/41620363

    2、iOS开发抓包工具之Charles使用:https://mp.weixin.qq.com/s?__biz=MjM5OTM0MzIwMQ==&mid=2652547886&idx=1&sn=2f00b15cdd90d9c63c07c9d2556ea85b&chksm=bcd2ee208ba56736b7555c9afab9b9bb397f42f23f0ff59228d7e087ea75fc4dfb7a5f33ec26&scene=0#wechat_redirect

    3、如何在MacOS下使用Charles进行Http请求分析:https://jingyan.baidu.com/article/335530da80e70319ca41c37c.html?qq-pf-to=pcqq.group

    4、iOS 开发者必会的几项技能,不知不用你就OUT了:http://www.cocoachina.com/articles/24360

    5、Charles 从入门到精通【这位大神的服务打不开了,好在我机智,当时把内容也copy了下来】:http://blog.devtang.com/2015/11/14/charles-introduction/

    我是一名搬运工(链接5内容):

    目录及更新说明

    更新记录:

    2013 年 12 月,第一版。
    2015 年 11 月,增加 Rewrite 相关介绍。
    2016 年 8 月,增加 Charles 4 的介绍,反向代理功能和设置外部代理,并且介绍了如何解决与翻墙软件的冲突。
    本文的内容主要包括:
    Charles 的简介
    如何安装 Charles
    将 Charles 设置成系统代理
    Charles 主界面介绍
    过滤网络请求
    截取 iPhone 上的网络封包
    截取 Https 通讯信息
    模拟慢速网络
    修改网络请求内容
    给服务器做压力测试
    修改服务器返回内容
    反向代理
    设置外部代理,解决与翻墙软件的冲突
    总结

    Charles 限时优惠

    Charles 4 正版限时优惠优惠活动(限时:2016 年 8 月 8 日 - 15 日),优惠 30 元,点击领取优惠券。

    简介

    在这里插入图片描述
    Charles 是在 Mac 下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。

    Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

    除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。

    Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。

    Charles 主要的功能包括:

    截取 Http 和 Https 网络封包。
    支持重发网络请求,方便后端调试。
    支持修改网络请求参数。
    支持网络请求的截获并动态修改。
    支持模拟慢速网络。
    Charles 4 新增的主要功能包括:

    支持 Http 2。
    支持 IPv6。

    安装 Charles

    去 Charles 的官方网站(http://www.charlesproxy.com)下载最新版的 Charles 安装包,是一个 dmg 后缀的文件。打开后将 Charles 拖到 Application 目录下即完成安装。

    将 Charles 设置成系统代理

    之前提到,Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。

    启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。如下所示:
    在这里插入图片描述
    之后,你就可以看到源源不断的网络请求出现在 Charles 的界面中。

    需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。

    Charles 主界面介绍

    在这里插入图片描述
    Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”。

    Structure 视图将网络请求按访问的域名分类。
    Sequence 视图将网络请求按访问的时间排序。

    大家可以根据具体的需要在这两种视图之前来回切换。请求多了有些时候会看不过来,Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求。

    对于某一个具体的网络请求,你可以查看其详细的请求内容和响应内容。如果请求内容是 POST 的表单,Charles 会自动帮你将表单进行分项显示。如果响应内容是 JSON 格式的,那么 Charles 可以自动帮你将 JSON 内容格式化,方便你查看。如果响应内容是图片,那么 Charles 可以显示出图片的预览。

    过滤网络请求

    通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:

    方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://yuantiku.com , 那么只需要在 Filter 栏中填入 yuantiku 即可。

    方法二:在 Charles 的菜单栏选择 “Proxy”->”Recording Settings”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:
    在这里插入图片描述

    通常情况下,我们使用方法一做一些临时性的封包过滤,使用方法二做一些经常性的封包过滤。

    方法三:在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项,如下图所示:
    在这里插入图片描述
    这种方式可以临时性的,快速地过滤出一些没有通过关键字的一类网络请求。

    截取 iPhone 上的网络封包

    Charles 通常用来截取本地上的网络封包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求。下面我就以 iPhone 为例,讲解如何进行相应操作。

    Charles 上的设置

    要截取 iPhone 上的网络请求,我们首先需要将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”->”Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置。如下图所示:
    在这里插入图片描述

    iPhone 上的设置

    首先我们需要获取 Charles 运行所在电脑的 IP 地址,Charles 的顶部菜单的 “Help”->”Local IP Address”,即可在弹出的对话框中看到 IP 地址,如下图所示:
    在这里插入图片描述
    在 iPhone 的 “ 设置 “->” 无线局域网 “ 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888,如下图所示:
    在这里插入图片描述
    设置好之后,我们打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单(如下图所示),点击 “Allow” 即可完成设置。
    在这里插入图片描述

    截取 Https 通讯信息

    安装证书

    如果你需要截取分析 Https 协议相关的内容。那么需要安装 Charles 的 CA 证书。具体步骤如下。

    首先我们需要在 Mac 电脑上安装证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate”,然后输入系统的帐号密码,即可在 KeyChain 看到添加好的证书。如下图所示:
    在这里插入图片描述
    需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所有 Https 网络请求,可以在该请求上右击,选择 SSL proxy,如下图所示:
    在这里插入图片描述
    这样,对于该 Host 的所有 SSL 请求可以被截取到了。

    截取移动设备中的 Https 通讯信息

    如果我们需要在 iOS 或 Android 机器上截取 Https 协议的通讯内容,还需要在手机上安装相应的证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 弹出的简单的安装教程。如下图所示:
    在这里插入图片描述
    按照我们之前说的教程,在设备上设置好 Charles 为代理后,在手机浏览器中访问地址:http://charlesproxy.com/getssl,即可打开证书安装的界面,安装完证书后,就可以截取手机上的 Https 通讯内容了。不过同样需要注意,默认情况下 Charles 并不做截取,你还需要在要截取的网络请求上右击,选择 SSL proxy 菜单项。

    模拟慢速网络

    在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对此需求提供了很好的支持。

    在 Charles 的菜单上,选择 “Proxy”->”Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且可以设置 Throttle Preset 的类型。如下图所示:
    在这里插入图片描述
    如果我们只想模拟指定网站的慢速网络,可以再勾选上图中的 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。

    修改网络请求内容

    有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择 “Edit”,即可创建一个可编辑的网络请求。如下所示:
    在这里插入图片描述
    我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求(如下图所示)。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便,如下图所示:
    在这里插入图片描述

    给服务器做压力测试

    我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,方法如下。

    我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:
    在这里插入图片描述
    接着我们就可以在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。
    在这里插入图片描述
    悄悄说一句,一些写得很弱的投票网站,也可以用这个办法来快速投票。当然,我也拿 Charles 的 Repeat 功能给一些诈骗的钓鱼网站喂了不少垃圾数据,上次不小心还把一个钓鱼网站的数据库打挂了,嗯,请叫我雷锋。

    修改服务器返回内容

    有些时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。如果没有 Charles,要服务器配合构造相应的数据显得会比较麻烦。这个时候,使用 Charles 相关的功能就可以满足我们的需求。

    根据具体的需求,Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:

    Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
    Rewrite 功能适合对网络请求进行一些正则替换。
    Breakpoints 功能适合做一些临时性的修改。

    Map 功能

    Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。

    在 Charles 的菜单中,选择 “Tools”->”Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面。
    在这里插入图片描述
    对于 Map Remote 功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空。下图是一个示例,我将所有 ytk1.yuanku.ws(测试服务器)的请求重定向到了 www.yuantiku.com(线上服务器)。
    在这里插入图片描述
    对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地(如下图所示),然后稍加修改,成为我们的目标映射文件。
    在这里插入图片描述
    下图是一个示例,我将一个指定的网络请求通过 Map Local 功能映射到了本地的一个经过修改的文件中。
    在这里插入图片描述Map Local 在使用的时候,有一个潜在的问题,就是其返回的 Http Response Header 与正常的请求并不一样。这个时候如果客户端校验了 Http Response Header 中的部分内容,就会使得该功能失效。解决办法是同时使用 Map Local 以下面提到的 Rewrite 功能,将相关的 Http 头 Rewrite 成我们希望的内容。

    Rewrite 功能

    Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。
    例如,我们的客户端有一个 API 请求是获得用户昵称,而我当前的昵称是 “tangqiaoboy”,如下所示:
    在这里插入图片描述
    我们想试着直接修改网络返回值,将 tangqiaoboy 换成成 iosboy。于是我们启用 Rewrite 功能,然后设置如下的规则:
    在这里插入图片描述
    完成设置之后,我们就可以从 Charles 中看到,之后的 API 获得的昵称被自动 Rewrite 成了 iosboy,如下图所示:
    在这里插入图片描述

    Breakpoints 功能

    上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。

    Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。

    下图是我们临时修改获取用户信息的 API,将用户的昵称进行了更改,修改完成后点击 “Execute” 则可以让网络请求继续进行。
    在这里插入图片描述
    需要注意的是,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。

    反向代理

    Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。例如,在下图中,我将本机的 61234 端口映射到了远程(www.yuantiku.com)的80端口上了。这样,当我访问本地的 61234 端口时,实际返回的内容会由 www.yuantiku.com 的 80 端口提供。
    在这里插入图片描述

    设置外部代理,解决与翻墙软件的冲突

    Charles 的原理是把自己设置成系统的代理服务器,但是在中国,由于工作需要,我们常常需要使用 Google 搜索,所以大部分程序员都有自己的翻墙软件,而这些软件的基本原理,也是把自己设置成系统的代理服务器,来做到透明的翻墙。

    为了使得两者能够和平共处,我们可以在 Charles 的 External Proxy Settings 中,设置翻墙的代理端口以及相关信息。同时,我们也要关闭相关翻墙软件的自动设置,使其不主动修改系统代理,避免 Charles 失效。

    总结

    通过 Charles 软件,我们可以很方便地在日常开发中,截取和调试网络请求内容,分析封包协议以及模拟慢速网络。用好 Charles 可以极大的方便我们对于带有网络请求的 App 的开发和调试。

    愿本文帮助大家成为 Charles 的专家,祝大家玩得开心~

    展开全文
  • Mac 抓包工具青花瓷Charles使用步骤

    千次阅读 2018-07-04 15:17:08
    windows上抓包的工具有httpwatch、fiddler等,Facebook 的stetho用于安卓开发也很方便,但是Mac呢? 这里我也才学会使用Charles,大家都说这个在mac上还算好用的了,经过我的使用体验发现配置步骤比较多, 使用体验...
  • 最近换了公司,电脑也由原来的windows电脑换成了mac,所以抓包工具也得换成mac的charles了,这里做记录只是希望更多的和我一样的初次使用者少走弯路,直接上手使用。 1、介绍 Charles是一个HTTP代理服务器,HTTP...
  • mac抓包:Fiddler and charles

    千次阅读 2018-10-24 17:50:42
    如果你还没尝试 用Fiddler抓包,我建议你直接看下面的用charles工具来抓包,Fiddler真的挫还要安装配置一大堆结果还不尽人意 如果你搞到一半有问题,不死心一定想用它抓个包的可以看看
  • 下载后在程序Charles的Contents->Java中直接替换charles.jar文件即可.
  • Mac抓包工具ProxyMan安装及移动端配置

    千次阅读 2020-03-20 19:38:31
    自动生成证书,轻松在 Mac 端启用 SSL 代理抓包,并且集成移动设备的调试。监控应用和 SSL Web 服务器之间所有的 HTTP / HTTPS 流量,方便开发人员进行数据观察及流量分析。 相比Charles,有自身的特点。可以随意...
  • 参考: ... 如果只想看到手机端的所有请求,可以勾选掉mac端的Proxy(macOS Proxy勾选中,表示对当前mac也进行抓包),只专注手机端数据: 或者用过滤框过滤指定地址:
  • Mac抓包软件Charles

    2017-07-09 14:54:25
    手机联网的话,charles应该会弹出一个确认窗口问是否同意通过charles联网,点同意,即可开始抓包。 注意:手机设置了 http 代理后,如果charles关闭了手机将无法上网,记得把 http 代理取消。 抓https包 ...
  • MAC抓包工具charles(青花瓷)

    千次阅读 2018-05-05 19:51:46
    http://pan.baidu.com/s/1pL6ClBX配置教程:http://blog.csdn.net/jiangwei0910410003/article/details/41620363应用教程:http://www.cnblogs.com/dsxniubility/p/4621314.html今天就来看一下Mac上如何进行抓包,...
  • mac抓包工具--Charles

    千次阅读 2015-11-01 10:58:05
    这次将要介绍的 Charles 的原理是设置中间代理来完成抓包的工作。Charles 的安装与破解(都是程序员,女人何必为难女人) 下载原版 Charles 路径:我的七牛云存储 or 官网,并正常安装(此版本为 3.10.2,目前为官网...
  • 一、简介charles是在mac下常用的抓包工具,除了抓包监控网络请求外,它还包括模拟慢速网络、重发网络请求、修改网络请求参数等。本文重点介绍如何抓包。二、本机抓包本机抓包时,需要选择菜单中的 “Proxy” –&...
  • 在开发中需要用到抓包辅助工具,Mac上使用的一个抓包神器,就是Charles。因为它是Java开发的,所有可以跨平台,支持在Mac、Linux以及Window操作系统下使用,问题是需要先安装JDK才能运行,同时它也是收费的。本篇...
  • 之前,有朋友需要Mac下一款实用的HTTP信息抓包工具——Charles,小子这里就分享出来给更多需要的朋友。这次带来的是最新4.0版本。 Charles是一款运行在你自己计算机上的web代理工具。它可以有效地获取HTTP通信信息...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,500
精华内容 12,200
关键字:

mac抓包