抓包神器之Charles,常用功能都在这里了

2023-10-29

 我们在开发网站项目的时候,我们可以通过浏览器的debug模式来看request以及response的数据,那么如果我们开发移动端项目没有网页呢?如何抓取数据呢?

 

      前几天有个做服务端的师弟跟我说他不用抓包工具,遇到问题直接debug代码,那我问他,如果线上服务的话,你怎么调?在实际项目中,没有遇到跟客户端相互扯皮的事情吗?我觉得很正常啊,客户端说他没问题,服务端也说他没问题,到底谁有问题?这时候没必要相互推脱,拿数据出来说话才是王道。抓包工具做了什么?它把客户端的请求数据,以及服务端返回的数据完完整整的抓取下来,供攻城狮分析问题。所以首先分析问题才是最重要的,而不是一上来就跟踪代码debug。

 

 

Charles

 

    是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。

 

Charles主要功能:

 

1. 支持SSL代理。可以截取分析SSL的请求。

2. 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。

3. 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。

4. 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。

5. 支持重发网络请求,方便后端调试。

6. 支持修改网络请求参数。

7. 支持网络请求的截获并动态修改。

8. 检查HTML,CSS和RSS内容是否符合W3C标准。

 

Charles安装:

 

    去Charles的官方网站(http://www.charlesproxy.com)下载最新版的相应操作系统的Charles安装包安装即可。

 

    Charles是收费软件,可以免费试用30天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时。

 

    因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为Charles强制关闭而遇到影响。(偷偷告诉你,公众号回复“Charles”获取破解版下载链接)

 

Charles的功能很强大,我们这里只介绍几个常用的并且非常实用的功能:

 

    1. 将Charles设置成系统代理

    2. 截取移动设备上的网络请求包

        2.1手动重复请求(Repeat,Advanced  Repeat)

        2.2手动模拟请求(Compose)

        2.3修改网络请求内容(Compose)

    3. 过滤网络请求

    4. 代理转发

    5. 支持https请求抓包(如果配置了还是抓不到,下面有解决方案)

 

Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”。

 

    1. Structure 视图将网络请求按访问的域名分类。

    2. Sequence 视图将网络请求按访问的时间排序。

  

下面将一一介绍这些如何配置和使用

 

一. 将Charles设置成系统代理

 

Charles 是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,系统本地发出去的请求都能被截取下来。如果只抓取APP的包的话,可关闭此配置,这样不会出现太多的数据看着比较乱。

 

Mac

Windows:

 

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

 

二. 截取移动设备上的网络请求包

 

我们在调试移动APP时,需要抓取APP发送的数据包,首先进行设置,Proxy -> Proxy Settings默认端口是8888,根据实际情况可修改。

 

 

 

查看本机IP地址:Help -> Local IP Addresses

 

 

 

然后配置手机代理:

 

IOS和Android配置差不多

 

 

 

打开要调试的APP,请求就会先发送到Charles,然后验证是否允许访问。

 

 

 

当点击允许后,可以在Proxy -> Access Control Settings里看到可以访问此代理服务器列表

 

 

 

注意

如果不小心点击了拒绝,可以手动添加手机IP/Mac地址到允许访问列表,或者重启Charles,手机再次访问,会再次提示选择。

如果不想每换一个手机都要进行验证,可以配置允许所有手机访问,加入

0.0.0.0/0(IPv4)或::/0(IPv6)

现在就可以抓包了,拿一款我们公司开发的乐视车联APP来做测试:

 

 

 

 

 

三. 过滤网络请求

 

通常情况下,网络请求是非常大量的,从几十个请求里找到我们需要的观察的某个请求比较费时,那么我们就需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。有两种方法:

 

1. 在Sequence界面的中部的Filter栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:*.leautolink.com,那么只需要在Filter栏中填入leautolink即可。(一般用于临时过滤)

 

 

2. 在Charles的菜单栏选择"Proxy"->"Recording Settings",然后选择Include栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:(固定过滤地址)

 

 

四. 代理转发

 

   实际开发时,有这样的场景,服务端线上版本有bug,你在本地修改程序后,需要模拟实际的线上环境,来验证程序的正确性,最笨的方法就是让客户端修改一下APP的调用地址到你本机,然后重新打一个版本供你模拟测试,这样虽然可以,但每次遇到bug都要这么做的话,那效率极其低下,然而Charles为我们解决了这个问题。

 

请求转发,把调用方调用的地址转发到你本机地址的程序进行执行。

右键 -> Map Remote ...

 

 

 

并且配置Tools -> Map Romote

 

 

运行APP

 

 

五. Https请求抓包

默认我们是看不到https的请求数据的。我们需要安装证书。

 

 

Mac:

 

 

双击打开Charles Proxy CA

 

 

 

手机配置完代理(必须的操作)后,浏览器打开http://chls.pro/ssl

 

 

 

 

 

然后配置Proxy -> SSL Proxying Settings... 添加要抓取的https请求

 

 

然后再次请求:

 

如果不再使用Charles,想删除手机里的证书文件怎么删除呢?

设置->通用->描述文件与设备管理,删除指定的证书即可

 

Windows:

 

 

 

下一步

 

 

然后继续下一步直到导入成功。

 

剩下的配置与Max下配置相同

 

SSL的问题:

 

    最近iPhone系统更新到ios 10.3后,用Charles抓包竟然出现了一些问题,https的请求都会失败,提示错误信息为Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate. 然而之前任何问题都没有,并且相关设置都正确:电脑上安装了Charles的根证书,并且设置了始终信任,然后手机上也登录了http://chls.pro/ssl安装了描述文件,一切都按正常程序走的,但是错误始终无法解决.

 

原因:

    虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。

 

解决:

设置->通用->关于本机->证书信任设置-> 找到charles proxy custom root certificate然后信任该证书即可.

 

 

Windows系统无法上网的问题

 

    在windows下,如果Charles没有正常关闭,或者系统重启后无法上网的问题,因为Charles做了系统代理,当上网的时候,首先先访问代理服务器,然后代理再去链接网络,这时候Charles是非正常关闭的,只要重新打开Charles即可上网正常,正常关闭Charles后同样没问题。

 

写给测试人员的

 

    另外抓包工具不只是开发人员独享的,任何一个参与项目的人都可以使用,测试工程师,运维,产品经理等等任何对技术感兴趣的人,尤其是测试工程师,在测试的过程中遇到问题,不是简单的bug记录员,而要做到问题的分析员,这才是真正的“工程师”,当bug真正的到开发这的时候,他拿到的是不仅仅是bug,包含了分析过程,分析的数据,甚至是解决方案。我觉得这才是标准工作方式。

 

    举个例子,现在是移动互联网时代,那么我们开发的客户端必然包括Android和IOS版本,同样的功能必然在不同的客户端都有实现,比如同样的功能Android能用,而IOS不能用,这时候对于测试人员来说,他可以简单的提个bug说某个功能Android能用,ISO不能用,请开发人员解决。这个问题应该给谁呢?IOS开发,是IOS缺少请求参数?服务端开发,是服务端缺少对IOS的兼容吗?为了能让问题解决,可能要写两个相同的bug发给不同的人, 那我们开发看到这样的问题,首先重现问题,那么肯定要跟测试人再次沟通,问问当时的测试过程,然后模拟同样的数据进行复现。

 

    那么如果我们的测试工程师换一种工作方式呢?当遇到问题的时候,用抓包工具把数据抓下来,首先比较Android和IOS发送请求参数有什么不同,比较一下返回的数据有什么不同,如果请求参数不同,那么测试人员通过模拟工具,把缺少的参数加上,那么返回的数据是不是就正确了呢?如果参数相同,返回的数据不同,或者是参数相同,返回的数据相同,这样的话,问题就显而易见了,测试人员可以把抓取的数据提交给相应的开发人员,而开发人员完全可以去debug了。提高测试人员的自身技能,而又提高了解决问题的效率,何乐而不为?

 

相关阅读:

如何通过技术手段 “干掉” 视频APP里讨厌的广告?

通过技术手段 “干掉” 视频APP里讨厌的广告之(腾讯视频)

 

 

推荐阅读:

2018,如何从小白升级到大牛程序员呢?

htt2.0的时代真的来了

如何站在巨人的肩膀上,将自己的产品赋予AI的能力?百度UNIT

 

学习分享:

深度机器学习56G视频资源分享

 

知识分享:现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抓包神器之Charles,常用功能都在这里了 的相关文章

  • 使用XStream实现Java对象与XML互相转换(不断更新中)

    添加pom依赖
  • StrSubstitutor和StrUtil占位符字符串替换

    目录 一 commons lang包下的StrSubstitutor 1 使用场景一 2 使用场景二 二 hutoo包下的StrUtil 1 使用场景一 2 使用场景二 3 使用场景三 三 原生的三种方式 一 commons lang包下的
  • Fiddler / Charles - 夜神模拟器证书安装App抓包

    Fiddler Charles 夜神模拟器证书安装App抓包 文章目录 Fiddler Charles 夜神模拟器证书安装App抓包 前言 一 软件安装 1 Openssl安装 1 1下载安装 1 2配置环境变量 1 3查看openssl版
  • 使用charles map remote host

    应用场景 a 某个后端Dev在他本地分支有一些代码改动 Bug fix 在未部署的情况下 通过remote map可以提前测试验证其个人分支 b APP进入prod测试阶段 有一些H5页面Prod环境一经部署会直接影响线上用户 因此H5 前
  • 如何用Flask和Redis来动态维护代理池

    我们在爬虫时可能会遇到封IP的问题 那么利用代理就可以进行IP的伪装 然后进行爬虫的请求 我们有时会需要非常多的ip 那么维护一个代理池 代理的队列 可以存入或取出 需要对整个池进行定期的检查和更新 以此来保证代理的高质量 也就是代理的检测
  • 推荐一个将MD格式的文档轻松转换到微信公众号的工具

    因为微信公众号自带的编辑器不是特别友好 这也是一个痛点 之前也有使用过google插件 但不是特别灵活 现在推荐的这款工具可以很好的支持将MD格式的文档直接进行渲染 还是非常好用的 话不多说 先给出工具地址 https md openwri
  • (四)Loadrunner 代理录制

    1 代理录制主要是为了解决浏览器兼容性问题导致的脚本录制问题 包括录制时浏览器打不开 录制脚本为空 2 代理录制主要步骤为 lr录制选项设置代理 lr录制选择代理的exe 开启浏览器代理 代理的端口号跟loadrunner里设置的代理端口号
  • Ubuntu20.04 LTS 安装GCC11.2教程,包教包会!

    GCC 11 2 安装 其他版本 如9 5 12 1等都可以用同样方法编译安装 但是依赖包不一样 需要到gcc官网下载对应的依赖包和源码包 前置条件 首先把Ubuntu提供的各种构建工具都给他装上 sudo apt install buil
  • APP 抓包和微信小程序抓包-Charles 的精简使用教程

    APP 抓包和微信小程序抓包 Charles 的精简使用教程 2021 09 25 更新 2019 07 10 更新 目标 教程 一 安装 Charles 二 Charles 简介 1 Charles 欢迎页面 2 基础功能按钮 3 抓包内
  • python的requests请求https时,与fiddler冲突造成ssl错误

    目录 原因 解决方案 把fiddler关掉就好 去掉requests的ssl验证 保持fiddler和requests的证书一致 使用从浏览器导出证书 可以放到代码目录下 走fiddler代理 使用fiddler导出的证书 要用openss
  • Java写入txt文件内容

    Java写入数据进txt文件 需求 多条数据追加进文件 且需要处理中文编码问题 以下代码只能处理向文件添加数据的功能 但是会覆盖掉之前的数据 import java io File import java io FileOutputStre
  • UUID工具类

    import java util UUID public class Uuid public static String id32 String uuid UUID randomUUID toString uuid uuid replace
  • MD5学习总结

    1 MD5简介 MD5 即消息摘要算法第五版 是一种被广泛使用的密码散列函数 散列算法的基本原理是 进行数据 如一段文字 运算 将原始数据变为另一段固定长度的值 MD5 可以产生出一个 128位 16字节 的散列值 hash value 用
  • mac charles4.0.2免费破解版安装

    mac charles4 0 2免费破解版安装 按相关步骤即可成功安装并使用 1 下载安装charles https www jianshu com p 4f0573f3c5db 2 安装成功之后相关配置 https www jianshu
  • Java 截取String类型字符串截掉后两位

    String strhours String valueOf 123456 String strh strhours substring strhours length 2 strhours length 截取 String strm st
  • WireShark常用过滤规则

    一 地址过滤 对源地址及目的地址过滤 ip src 192 168 0 1 ip dst 192 168 0 1 对源地址或者目的地址过滤 ip addr 192 168 0 1 排除某个地址数据包过滤 ip addr 192 168 0
  • 手机设置无密码时显示“已被管理员、加密政策或凭据存储停用”的解决办法

    前段时间手机上为了抓包安装了SSL证书 并且设置了锁屏密码 后来觉得锁屏密码很麻烦就想着关掉锁屏密码 发现无密码选项是灰色的 并且提示 已被管理员 加密政策或凭据存储停用 如下图 网上百度大多数办法就是 设置 gt 安全 gt 删除凭证 然
  • 将XML格式文件转换JSON文件格式

    XMl文件转JSON字符串 1 1Maven引入依赖
  • charles及弱网测试

    安装 安装完成后 charles gt help gt register 输入注册信息 Registered Name https zhile io License Key 48891cf209c6d32bf4 相关配置 1 安装根证书 h
  • 抓取微信文章:使用代理来处理反爬虫措施

    参考 崔庆才老师教程 目标网站分析 我们将从搜狗 微信这个网址来爬取微信的文章 https weixin sogou com 输入 程序员 并搜索 可以看到上方的URL有许多的信息 我们只保留query type page这几个参数即可 修

随机推荐

  • 第三方支付由直连模式进入网联模式

    不知不觉 中国已成为使用手机支付最多的国家 手机支付的两大的厂商 支付宝和微信支付 已经走进了千家万户 现在出门基本上手机能解决的基本上不用现金 人们已经习惯了不带现金的日子了 支付宝 在去年 支付宝与微信先后发布了提现需要收取0 1 的手
  • 研究阶段性总结

    写这一篇只是对自己之前做的东西做个简短的总结以及为接下来的发展做个规划 自己目前的研究领域为基于深度学习的自然语言处理 研一上学期主要是学习了自然语言处理的基础以及python语言 包括分词 词性标注 构建词典 基本算法原理python实现
  • unity3d 给模型添加刚体后、或者角色控制器后下坠

    1 给模型添加一个刚体后 还要给模型添加一个碰撞器 人和地面的话 要注意地面有没有碰撞器 有的话注意地面碰撞器的Mesh网格是不是Null 还有
  • javaScript和jQuery自动加载方法

    一 JavaScript自动加载 在文本中用onload 当页面中所有内容 包括图片 加载完后再执行onload 如下 在脚本中用window onload 当页面中的所有内容 包括图片 加载完后再执行window onload 如下 wi
  • frp服务器内网穿透设置

    内网穿透的作用 内网穿透是指在一个局域网内 也称内网 中 通过某种技术手段 将局域网内部的网络资源 如ssh服务 Web服务 数据库等 暴露到公网中 从而实现公网用户对内网资源的访问和控制 它可以使得外部用户能够访问局域网内部的设备和服务
  • ubuntu20.04安装Android Studio踩坑

    1 卸载搜狗输入法 截止现在 2020年10月7日 当搜狗输入法处于活动状态时 所有jetbrains全家桶都不能用 换用百度输入法解决问题 2 Failed to install the following Android SDK pac
  • C++之内联函数

    C 之内联函数 为什么要有内联函数 我们编写了一个小函数 它的功能是比较两个string形参的长度并返回长度较小的string的引用 挑出两个string 对象中较短的那个 返回其引用 const string shorterString
  • STM32 基于keil5的printf打印设置

    1 因为使用串口来打印 所以将fputc函数和fgetc函数放在usart c源文件中 2 在usart c源文件中添加stdio h头文件 3 打印信息常用于调试 不建议使用中断 4 在usart c源文件中添加如下代码 int fput
  • 多通道振弦数据记录仪应用桥梁安全监测的解决方案

    多通道振弦数据记录仪应用桥梁安全监测的解决方案 城市化进程的加快和交通运输的发展 桥梁作为连接城市的重要交通工具 其安全性也变得越来越重要 为了保证桥梁的安全性 需要进行定期的监测和维护 其中 多通道振弦数据记录仪是一种有效的监测手段 可以
  • 零基础在家学编程,挑战年薪10万~100万

    疫情常态化 居家常态化 房贷 车贷 生活开支常态化 如何让我们的收入也常态化 有人说 我们眼下所处的二十一世纪二十年代是世界大转折之年代 而作为一位社会普通人员 如何才能跟上社会发展 如何提高自己生存能力 如何适应社会发展状态 如何保障稳定
  • 本地电脑无法登陆路由器

    以TPLINK 路由器为例 路由器有两种登录方式 1 输入如下所示字符串 http tplogin cn 适用于本地电脑ip地址是自动获得IP的情况 如果是勾选 使用下面的IP地址 则无法登陆路由器 2 输入固定IP方式 不同品牌路由器地址
  • 异常:Could not set parameters for mapping: ParameterMapping{property='xxx', mode=XX, ······}

    1 在前端页面做添加货物的数据时 将前端的数据返回到Controller的方法 执行下一步就出现以下的异常 java lang RuntimeException org mybatis spring MyBatisSystemExcepti
  • 机器学习之聚类

    无监督学习 Learning from unlabeled unannotated data without supervision 聚类概念 the process of grouping a set of objects into cl
  • h3c 交换机 密文 有解密办法吗?

    用户名123 密码123 可逆 local user 123 password cipher c 3 3 3kK6PWyha6eFuCtZ0QfnE1jVsmBOaiw 用户名123 密码123 可逆 local user 123 pass
  • 服务器物理链路,【交换机在江湖对接案例】配置堆叠系统对接NLB服务器群集示例(通过物理链路环回方法)...

    配置堆叠系统对接NLB服务器群集示例 通过物理链路环回方法 设备通过物理链路环回方法对接NLB服务器群集简介 NLB是微软在Windows Server上开发的多服务器群集负载均衡特性 交换机与NLB服务器群集相连时 NLB服务器要求交换机
  • 浅谈web前端工程师hr面试经典问题20+

    目录 前言 一 经典灵魂20问 1 你为什么不考研 2 你如何看待加班 3 为什么选择北京 4 最能概况你自己的三个词 5 你喜爱的运动 6 你的座右铭 7 谈谈你的缺点 8 对于这项工作你有那些可预见性的困难 9 如果我录用你 你将怎样开
  • 永洪科技上榜2023年度 IDC中国FinTech 50

    8月15日 全球知名的第三方研究机构IDC发布了 2023 IDC中国FinTech 50 榜单 永洪科技凭借完善的产品服务体系 差异化的产品优势以及丰富的客户实践经验 已经连续两年荣登 IDC 中国 FinTech 50 榜单 IDC作为
  • Keras Conv1d 参数及输入输出详解

    Conv1d in channels out channels kernel size stride 1 padding 0 dilation 1 groups 1 bias True filters 卷积核的数目 即输出的维度 kerne
  • C++函数模板特化,类模板特化

    一 模版与特化的概念 1 函数模版与类模版 C 中模板分为函数模板和类模板 函数模板 是一种抽象函数定义 它代表一类同构函数 类模板 是一种更高层次的抽象的类定义 2 特化的概念 所谓特化 就是将泛型的东西搞得具体化一些 从字面上来解释 就
  • 抓包神器之Charles,常用功能都在这里了

    我们在开发网站项目的时候 我们可以通过浏览器的debug模式来看request以及response的数据 那么如果我们开发移动端项目没有网页呢 如何抓取数据呢 前几天有个做服务端的师弟跟我说他不用抓包工具 遇到问题直接debug代码 那我问