博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
charles 抓包 (一)
阅读量:4841 次
发布时间:2019-06-11

本文共 2183 字,大约阅读时间需要 7 分钟。

在web、app开发中经常需要通过抓包来定位页面、接口返回数据的问题。在mac系统中,charles是一款功能丰富的抓包软件。可以实现app的数据抓包。

工具:

附送charles的破解方法(亲测):

// Charles Proxy License

// 适用于Charles任意版本的注册码,谁还会想要使用破解版呢。
// Charles 4.2目前是最新版,可用。
Registered Name:
License Key: 48891cf209c6d32bf4

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在工作中主要使用的功能
  1. 将Charles设置成系统代理。勾选系统代理后,系统本地发出去的请求都能被截取下来。如果只抓取APP的包的话,可关闭此配置,这样不会出现太多的数据看着比较乱。

1288536-20181019131243018-2137824365.png

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

  1. 截取移动设备上的网络请求包
    2.1手动重复请求(Repeat,Advanced  Repeat)
    2.2手动模拟请求(Compose)
    2.3修改网络请求内容(Compose)
  2. 过滤网络请求
  3. 代理转发
  4. 支持https请求抓包(如果配置了还是抓不到,下面有解决方案)

charles配置 http

(1)配置代理端口号

Proxy -》 Proxy Settings -》 Port,port可以随便指定,这里取默认的8888;

1288536-20181019131318066-2107491191.png

1288536-20181019131324131-321051726.png

(2)配置手机端代理 ip;

将手机与pc端连接同一个无线网络,Android手机的网络代理一般在设置页面,点击当前连着的wifi到网络详情,在(小米8)下方手动修改代理配置,然后将你的电脑ip(例如:192.168.2.103)和第一步中配置的端口号(8888)填写到手机上即可。如下图:

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

1288536-20181019131334985-1111884313.png

配置手机代理:

1288536-20181019131341280-1402530053.png

1288536-20181019131354708-2142470776.jpg

以上的配置就可以解决http的抓包。(如何抓,设断点、map、补充)

charles配置 https

这时,当查看https的包时,会发现response是乱码,或者处于⬆️吊死的请求状态。这时候就要设置https的相关配置。

(1)添加SSL Proxiyng

具体步骤是:Proxy -》 SSL Proxiyng Settings -》勾选“Enable SSL Proxying”,并点击下方的Add,你可以这样配置:

1288536-20181019131421620-55090357.png

1288536-20181019131430825-589750394.png

host是你要抓的域名或者ip(这里用通配符*,表示抓去所有的https请求),port为443。

(2)下载手机端、mac端的ssl证书
mac端证书

如果是v3.10 以前的版本首先去 .crt 文件,选择「总是信任」按钮,在钥匙串访问中即可看到添加成功的证书。如果是v3.10以后的在菜单中找到 Help -> SSL Proxying -> Install Charles Root Certificate.

1288536-20181019131458945-1811509990.png

添加好证书之后,右键证书显示简介,点击后点击信任,选则始终信任。

1288536-20181019131513289-1905240355.png

1288536-20181019131708279-1861262575.png

手机端证书

charles 执行以下步骤:Help -> SSL Proxying ->Install Charles Root Certificate on a Mobile Device…

1288536-20181019131633198-1455057673.png

按照图中的说明在手机浏览器中打开安装证书。

好了大功告成,现在就应该抓包电脑浏览器和手机app的数据了;

问题:

为什么有时候抓不到包?
检查一下是不是启动了代理上网,关掉重启就可以了(翻墙的)
这是笔者遇到的问题,因为笔者使用的是代理上网方式,这可能根charles的代理有所冲突,解决方法是,设置 -> 网络 -> Wifi -> 高级 -> 代理,在左侧的配置协议列表中取消勾选"自动发现代理"和“自动代理配置”。

重启charles,再尝试一下,看能否charles抓取mac的网络请求包。

转载于:https://www.cnblogs.com/csuwujing/p/9815862.html

你可能感兴趣的文章
python 中is和= = 的区别
查看>>
[C/C++]关于C++11中的std::move和std::forward
查看>>
图片显示、PNG透明
查看>>
Java的sql动态参数
查看>>
centos 6.5 双网卡 上网 virtualbox nat hostonly
查看>>
11大Java开源中文分词器的使用方法和分词效果对比
查看>>
解题报告 Valentine‘s seat
查看>>
反射动态创建不同的Processor
查看>>
函数中对象名的传参形式
查看>>
PHP基础知识
查看>>
Codeforces Round #480 (Div. 2)
查看>>
codeforce 1059E Split the Tree
查看>>
【读书笔记-数据挖掘概念与技术】数据预处理
查看>>
进度条第八周
查看>>
简单BFS POJ 3126 Prime Path
查看>>
运行第一个OpenCV程序
查看>>
算法笔记_003:矩阵相乘问题【分治法】
查看>>
算法笔记_017:递归执行顺序的探讨(Java)
查看>>
牛顿法与拟牛顿法学习笔记(四)BFGS 算法
查看>>
ninth week (1)
查看>>