美文网首页iOS开发技巧iOS开发技术ios
十分钟学会Charles抓包(iOS的http/https请求)

十分钟学会Charles抓包(iOS的http/https请求)

作者: Roy_Liang | 来源:发表于2016-09-08 18:59 被阅读151843次

  • Charles安装
  • HTTP抓包
  • HTTPS抓包

1. Charles安装

官网下载安装Charles:
https://www.charlesproxy.com/download/

2. HTTP抓包

(1)查看电脑IP地址
(2)设置手机HTTP代理

手机连上电脑,点击“设置->无线局域网->连接的WiFi”,设置HTTP代理:
服务器为电脑IP地址:如192.168.1.169
端口:8888

设置代理后,需要在电脑上打开Charles才能上网

(3)电脑上打开Charles进行HTTP抓包

手机上打开某个App或者浏览器什么的,如果不能上网,检查前面步骤是否正确

点击“Allow”允许,出现手机的HTTP请求列表

�HTTP抓包

3. HTTPS抓包

HTTPS的抓包需要在HTTP抓包基础上再进行设置

设置前抓包HTTPS是这样的

设置后抓包HTTPS长这样



以下为在HTTP抓包基础上进行HTTP抓包的进一步设置步骤:

(1)安装SSL证书到手机设备

点击 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device

出现弹窗得到地址 chls.pro/ssl

手机安装SSL证书的地址

在手机Safari浏览器输入地址 chls.pro/ssl,出现证书安装页面,点击安装
手机设置有密码的输入密码进行安装

�安装证书
  • 注意1:有兄弟姐妹说Safari浏览器输入这个网址chls.pro/ssl安装不了证书的情况,
    亲测要(1)设置好手机HTTP代理 (2)电脑上Charles要开着
  • 注意2:iOS 10.3系统,需要在 设置→通用→关于本机→证书信任设置 里面启用完全信任Charles证书
    (这里感谢@13002171223的提出这点 ,之前没升级10.3哈)
(2)�Charles设置Proxy

Proxy -> SSL Proxying Settings...

勾选Enable SSL Proxying,点击Add

Host设置要抓取的https接口,比如想抓这个


Host填写:https://api.weibo.cn
Port填写:443
(3)进行HTTPS抓包

让手机重新发送https请求,可看到抓包

HTTPS抓包

注意:不抓包请关闭手机HTTP代理,否则断开与电脑连接后会连不上网
----愿您有所收获~ end


相关文章

网友评论

  • 晓_观月:https抓包已经成功,但还是有的https接口抓不到,依旧unknown,而且这种连接设置完enable ssl-->port 443后,手机访问不到了,访问失败了,怎么解决
  • 75d17fc25ded:作者大大,想问一下charles可以抓微信小程序的包吗。app和微信小程序都是同一个域名,app 可以正常抓到,微信小程序提示“SSLHandshake: Remote host closed connection during handshake”,这是为什么呢?
  • paopaowuxie:你好 我是用的模拟器 为什么我设置好Charles之后模拟器就报网络失败-1012的错误呢 关掉Charles就好了
    西河老伯:你好,你的问题解决了吗?我也是用模拟器.
  • 邢泽:ios11.3 打开浏览器 就是不弹出下载证书页面 多尝试了几次 就弹出下载了 下载完之后需要在 关于本机 证书里边里面打开开关 才可以
  • 肾得朕心:电脑浏览器抓包呢
    肾得朕心:试了mac下的,证书添加到钥匙串后,证书是不被信任的,需要点击右键“显示简介”的信任里,选择信任证书,之后就可以抓https包了
  • 凡尘一笑:想问一下 有没有破解版的
  • 黛沁馨1990:我这边设置了https抓包,但还是无法看到具体接口内容,请问大神这个是什么原因?
  • 吴钧泽:抓包成功 👍
  • eb8f42a69e0f:host填入 * 可以抓取所有域名的请求。
  • 苦艾酒艾:很详细:+1:
  • rain_li:好赞哦,感谢分享
  • farawei:真的非常OK,我可以抓包了。
  • 金银岛:教程不错,不过有些信息更新不及时,现在 iOS 11系统都已经出来了,应该说明一下是在 iOS 10.3及以后的系统版本都需要做额外的设置(如30楼的这位好心人所言说的😝)
  • 球哥:有没有iOS 11的教程
  • 噗噗猪:非常好的分享…我能问下有破解4.1.2的jar包吗?
  • 颜海镜:小米6显示证书安装不上
    颜海镜:装上了,需要电脑上save一个cre的,手机直接下载的不行,囧,还得再系统设置里面手动安装
  • 洲洲哥:大神您好
    渣渣有个问题想请求关于抓包工具的。

    用charle能抓包https的服务信息,这样的话是不是https安全就不存在了?那这个抓包工具charls在这个抓包过程中扮演了一个什么角色?类似代理服务器吗?
  • Darker_坤:抓包HTTPS 按照你说的下载了证书 但是我手机安装不了证书啊!!这是为什么呢
  • LD_左岸:Host填写:https://api.weibo.cn

    这个是抓那个app的就写那个app的
    不是固定写死的是吗
  • 好乐悦我:感谢楼主,亲测确实可以抓取https请求, 真是道高一尺魔高一丈啊, https都没法保证安全了, 看来还是对传输的内容加密最靠谱了, 话说都能抓包还整https有啥意义呢??
  • 59a1300d1057:非常感谢 按照此操作已成功看到https上的数据
  • 望了不忘:请问一下作者,这个能抓HTTPS双向认证的么?
  • Stone0070:按照文章的配置来弄没毛病的,老铁~:smiley:
  • e3818f40f1c0:感谢,因为证书信任的,折腾了好久.
  • 南风_001:客户端和服务器双向校验的https证书。。 抓不了包。。
  • 大桔子123:请问大神,我的手机是 ios11.0.2,电脑和手机连的是同一个 wifi ,在手机设置 http 代理写上 电脑 ip 地址,电脑打开 charles ,手机访问浏览器或app都连不上网,电脑 charles 也不会 弹出 allow 询问框!,但微信,qq 可以发消息,但打不开网页

    设置 https 代理时,弹出框为 显示信息为:
    Configure your device to use Charles as its HTTP proxy on 127.0.0.1:8888, then browse to chls.pro/ssl to download and install the certificate.
    手机输入 chls.pro/ssl 打不开

    请大神解惑
    平地摔职业选手:电脑必须要有线网络+手机wifi才能用代理
    mac和手机都连同一个wifi是不行的
    38adad6745d1:我的也是打不开,手机和电脑处在同一WiFi下,端口配置好以后,在safari打开的网页统统是HTML格式。。。 不知道怎么回事
    大桔子123:请问大神,手机连的 wifi 必须是电脑分享出来的吗
  • 1da73ab7fa57:有的抓包成功了,但是有的是unknown没有抓包成功:pensive:
  • Bruce_XHG:你好 iOS11 https 还是不行啊
  • bf34274414b7:3)电脑上打开Charles这一步没有弹出带allow的对话框?怎么办
    38adad6745d1:我也遇到这个问题 不知道怎么回事
  • 76682de78bfb:亲测可行哦 谢谢题主
  • Captain_w:信任证书 是非常重要的.
  • LV大树:ios 10.3.2拿不到内容。
  • LV大树:为啥不成功呢。
  • e50ba1a5c8e4:charles抓包一直报500(不是服务器的问题),用同事的电脑可以正常抓包,前几天就是好的,今天突然这样了,重启电脑重新安装都试过还是这样,求问大神是不是设置那里出问题了,证书也是信任的
    e50ba1a5c8e4:按照你的配置一步一步走,抓https的时候都是提示500:no_mouth:
  • chenyu1520:如果想抓取所有接口的数据,Host 的位置写 *
  • 陆地蛟龙:好文。一次性成功
  • Litchi_wx:好棒!!!!
  • 代码守望者:针对网页好像也要配置证书,在钥匙串已经有了,但是还是不能抓https的,是不是配置Host?
  • 5ad4e8a52596:为啥抓浏览器电脑 chrome 等都不行呢!
  • 9efe1db2c646:哈哈,好文章有帮助赞赏是很应该的~
    只是有些带了证书的API确实抓不到囧...
  • 9efe1db2c646:支持一个!
    Roy_Liang:@彼时芒种 简书上4万多阅读收到的第一笔打赏,甚是感谢!激动~继续努力
  • 4ae4223a0fae:按照你的步骤设置的,但是抓取https时,下载了证书也信任了,host,prot也都添加了,重新运行被抓的app,app显示没有网络,把添加的host,prot去掉后,app显示有网络数据可以加载出来,请问这是怎么回事?
    4ae4223a0fae:@hulni 你现在抓取https的数据抓取成功了吗?
    4ae4223a0fae:@hulni 对的,不知道楼主怎么解决的?
    0cf8272a3cee:我的情况跟你一样不行 charels 4.0.2 host prot去掉显示锁
  • 0cf8272a3cee:看完相关帖子,验证多次,端口443就红X 数据没有, 端口写8888/8443 显示乱码
  • e145f80f1a08:请问miui android 7.0怎么配置,设置以后微博网络出错了
    Roy_Liang:@Blancmange 这个我没有弄过安卓的抱歉
  • 取个帅气的昵称吧哈哈:赞,建议楼主添加下30楼的楼友 @13002171223 的回复,他的这一步操作了之后才能真正抓到app上发出的https请求包内容
  • Karos_凯:之所以可以抓包,实际上 charles 绕过了 https,直接走的 http, 所以当服务器支持 http 时,你就可以抓到包,如果不支持时,你就抓不到包。
    Karos_凯:勘误:之所以能截包,是因为 charles 充当中间者,做了中间者攻击。微信之类app,不能截取包,是因为app 加入 ssl pining,可以对比服务器的下发的正书和本地正书是否一致,这样可以避免中间者攻击
    Karos_凯:@Roy_Liang 那你禁用80端口,还能截取?
    Roy_Liang:我把http全部自动跳转https请求,依然可以哦
  • 不必luo嗦:你好,我按照你的方法设置了https,但是还是显示unknown(前面的锁没有)
    不必luo嗦:@Roy_Liang 时光网的api能抓到吗?我抓的就是时光网,我好像抓不到
    Roy_Liang:试了一下有可能是第(2)步要抓取的https接口没有添加设置好
    Roy_Liang:如果不是红叉,还是现实unknown,但是在右边窗口看到有内容一些乱码,代表抓出来了,只是接口跟内容都被加密过了,无法识别吧
  • 5771c9457880:IOS 10.3 躺枪 抓不出数据
    Roy_Liang:亲测可以噢
  • d4b6b76e81da:郑重提醒, iOS10.3的真机抓包https, 在手机设置,关于本机,最下边有一个证书信任,必须打开charles的证书信任,才能抓包,而且,挂证书的api貌似抓不到包,只显示❌, 只有不挂证书的才能抓到
    半块:10.3 确实是这样 之前的系统OK 不用信任证书
    asaBoat:@13002171223 挂证书?是指服务器端有证书给客户端认证?
    5771c9457880:挂证书的API 会显示证书错误 有中间人之类的不发送任何数据
  • whiteking:棒棒哒 可以转发吗?
  • 半边枫叶:请问iOS10.3是抓了不了https吗,按照上面的步骤设置好后,还是报未知的证书,抓不到数据
    Roy_Liang:可以,需要多设置一步信任,文中已添加
  • Mr_Lucifer:一步不差, 但是就是 手机联网失败, ios10.3 , 求解?
    Roy_Liang:@Mr_Lucifer 我关闭了Charles证书信任还是可以联网的,只是不能抓成功
    Mr_Lucifer:@Roy_Liang 不是这个问题, 在 ios10.3 ,证书默认是不信任的. 需要在 设置 -> 关于本机-> 证书信任设置. 不过还是谢谢解答了.
    Roy_Liang:设置代理后,电脑要打开Charles才能联网。
    已亲测过10.3,可以的。
  • Thans:大神,请问下 设置好了以后手机没法上网是怎么回事儿
    Roy_Liang:@Thans 设置好手机连着电脑是可以上网的。可能原因代理没设置好跟电脑ip地址一样
  • 小包包包:抓出来还是乱码
    Roy_Liang:乱码有可能是没有将该https接口添加到设置里。
    3.(2)步骤
  • 笑破天:10.3貌似现在抓不了https了吧
    Roy_Liang:亲测可以
  • impBearXXX:大兄弟啊,这个chls.pro/ssl 打不开啊,看来需要你亲测啊:sob:
    Roy_Liang:今天又亲测。 Charles4.0 iOS 10.2。
    设置代理后手机网络可用,可以打开啊。
  • S型身材的猪:接口前面有一把锁是说明加密了吗
    Roy_Liang:应该是。
  • shaoslu:你好,我按你上面的步骤试了,但是手机上没办法访问“chls.pro/ssl”(手机已经设置好了代理,charles也打开着的)
    Big_Zheng:@Roy_Liang 我也是这种问题,都设置好了,可以连网,但是读不出来图片,然后chls.pro/ssl也进不去,你有时间再试试呗
    Roy_Liang:我的是Charles4.0,弹出来的地址是chls.pro/ssl 。
    手机访问这个地址前要保证设置完代理后手机网络可用,设置代理后,Charles会弹出一个窗口,点击允许,才可以访问网络的。 然后我今天又测了下,可以下载证书。 iOS 10.2系统。
    DarrenK:charles以前的版本不是chls.pro/ssl。你要看弹窗是什么地址。
  • 一1二2三3:设置之后 app直接提示网络出错。。拿不到数据了
    DarrenK:@怀念战争年代 iOS10.3版本需要打开 设置》通用》关于 里面对应的证书。这个不是不安全,只是Charles代理转发了你的https数据
    115ccb264d5e:@DarrenK 我就说之前能抓到现在抓不到了 原来还真是10.3的版本问题 那这样的话用https也不安全了 也是能抓到数据的
    DarrenK:你设备是iOS10.3的系统吧。iOS10.3以前的系统可以,可能是iOS10.3系统对抓包有限制吧。
  • 一代骄马:哈哈 谢谢 受教了
    Roy_Liang:@我是一只鳗鱼 客气:relaxed:
  • 小番茄阳阳:请问大神apple虚拟机 怎么配置ip
    Roy_Liang:@iOS_唔使问吖贵 模拟器用的电脑网络,应该不需要设置代理吧(我这都真机调试,没有下载模拟器,不然可以试下),然后在Charles-Help-SSL Proxying有安装证书到模拟器项
    小番茄阳阳:@Roy_Liang 是开发xcode自带模拟机,打错了
    Roy_Liang:@iOS_唔使问吖贵 :sweat:没有弄过虚拟机:sweat_smile:
  • Yokooll:抓到包以后怎么用到自己的项目里? 请求参数不知道在哪看
    Roy_Liang:@秦始皇的秦 看11楼回答
    我是三人禾:请问你的端口号是怎么获得的,比如微博那个,端口号是443?
    Roy_Liang:抓自己的包看看请求体了。什么请求头啊之类的。右边有 QueryString 可以看参数啊
  • CoderXYF:百度了半天,就数你这说得最清楚:+1:
  • CoderXYF:可以的牛逼,解决了我的疑难杂症
  • 海37度思念:如果是私有证书,能抓到么?
    Roy_Liang:测试了自己弄的自签名证书HTTPS,也可以抓到
    需要在Proxy -> SSL Proxying Settings...添加抓包ip地址,如我自己电脑的服务器的是192.168.1.112
  • 飞龙在天aaa:HTTPS抓微博的是成功了,但是别的都不成功,话说端口443是怎么来的,发现端口是非常重要的一环哦
    Roy_Liang:@扇子飞舞 试了下,把端口名去掉也可以抓到微博的。但是随便填其它的就不行了。
    飞龙在天aaa:@Roy_Liang 谢谢回复,我也发现了,确实大部分的是443端口,不知道有些不是443端口的可有解决办法呢?
    Roy_Liang:查了下,HTTPS的SSL一般使用443端口,默认的,当然也是可以修改的
  • 京哥: 为什么iOS 9 无法带开描述文件安装啊,打开的是Charles DownLoad网页!!
    5b51496dc6c2:@Roy_Liang 还是无法下载charles证书:
    设置了代理,也开着charles,但是请求charles一直失败,Safari显示的打不开网页,因为服务器已停止响应
    这是charles抓包的结果
    URL http://172.21.242.91:8888/
    Status Failed
    Failure Remote server closed the connection before sending response header
    Response Code -
    Protocol HTTP/1.1
    SSL -
    Method GET
    Kept Alive No
    Content-Type -
    Client Address /172.21.255.6
    Remote Address 172.21.242.91/172.21.242.91
    Roy_Liang:亲测要(1)设置好手机HTTP代理(2)电脑上Charles要开着
  • 883c7bb8a6ff:骚年、https还是乱码啊,不是加密的
    883c7bb8a6ff:@Roy_Liang 可以了、我抓的B站的、
    Roy_Liang:兄弟,我抓的微博的不是乱码,微信的是乱码
  • 醉心狂语:受教了,感谢作者
    Roy_Liang:@醉心狂语 客气了。只是学习了分享下。
  • 李白不读书:你好,想问个问题,有一些抓包可以显示,但是有一些抓了之后还是抓不出来,是为什么呢
    Roy_Liang:@李白不读书 有一些进行了内容加密,比如某心、某Q。请求request跟response都被加密成一堆乱码了。
    不知道你说的“抓了之后还是抓不出来”,是返回内容没出来,还是请求没出来,还是出来了一堆乱码
  • xiari1991:现在证书下不了了吧
    Roy_Liang:@yf_js 亲测可以啊
  • 男儿心:问下是不是所有的https加密的都能够抓出来?还是有的例外?
    男儿心:@Roy_Liang 嗯嗯 谢谢
    Roy_Liang:@男儿心 并没有,有的只能看到接口名,而内容是被另外加密处理过的,看到的是一堆乱码,如某Q、某信
  • 2da1e516025c:这个是只有浏览器的成功?抓APP的能成功吗?我抓我们的不成功,奇怪了
    Roy_Liang:@jia611 图文所示就是抓APP的。要注意设置手机HTTP代理,HTTPS的话要另设置证书,Proxy,接口名(见图)。就算是加密了,如微信、QQ,起码网络请求接口能看见,weixin...什么什么的
  • Machine_C:厉害了 word哥
    Roy_Liang:@dancekiyo 过奖了,只是学习
  • adcdc8c3ed80:https抓包并不能成功,战旗直播
    Stone0070:直播抓了有啥用处~~?
    db45d0a1c455:帖子 + 30楼 = 正解
    Roy_Liang:@Dreampie 抓微博能成功么?如文章中图示。

本文标题:十分钟学会Charles抓包(iOS的http/https请求)

本文链接:https://www.haomeiwen.com/subject/hansettx.html