android抓包工具——fiddler与charles的基本操作(弱网模拟,map local/remotebreakpoint 等)
Posted CodingForAndroid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android抓包工具——fiddler与charles的基本操作(弱网模拟,map local/remotebreakpoint 等)相关的知识,希望对你有一定的参考价值。
本文地址:http://blog.csdn.net/u011733020
使用Charles进行HTTPS抓包
Charles 也是一款很好用的抓工具,尤其是在Mac 上面,这里记录下 Mac 上使用Charles 抓包看数据,以及使用Charles mock 接口进行接口调试,模拟弱网环境的使用。
第一步 配置HTTP代理,这步与抓取HTTP请求是一样的:
选择在8888端口上监听,然后确定。够选了SOCKS proxy,还能截获到浏览器的http访问请求。
第二步 安装电脑端根证书:
首先在charles的 Help选项 选择 SSL Proxyings选项 再选择 Install Charles Root Certificate选项
设置信任:
第三步 配置SSL代理:
在charles的 Proxy选项选择SSL Proxy Settings
点add添加需要监视的域名,支持 *号通配符,端口一般都是443:
第四步 为手机设置代理
确保手机与电脑在同一局域网内,在手机无线中配置手动代理,输入安装Charles的电脑的网络地址,端口填8888。
第五步 为手机安装根证书
在手机上安装Charles的根证书:
ios设备:在Safri上打开Charles的根证书下载网址: chls.pro/ssl 。
顺利的话会出现这样的画面,继续点安装,然后去设置里的描述文件管理中信任它就行了。
android设备:
- 从 chls.pro/ssl 下载证书到本地。
- 复制到手机sdcard上
- 在手机
设置 -> 安全 -> 从存储设备安装
中命名并选择WLAN按照。
注意部分机型不识别.pem 格式,可以手动改为 .crt 格式。vivo 安装Charles证书步骤
注意 安卓7.0以后不允许https抓包,如果想看自己app的https数据,要配置一下networkSecurityConfig
<application
android:networkSecurityConfig="@xml/network_security_config"
文件目录res/xml/networkSecurityConfig.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
<certificates src="user" />
</trust-anchors>
</base-config>
</network-security-config
使用map local方式:
-
使用charles进行抓包,请求希望进行mock测试的接口,如订单列表接口OrderList(修改某个订单的状态)。
-
选择OrderList接口,右键save response,将Response保存到本地。(这一步主要是为了获取数据样本)
-
修改保存到本地的Response文件,如将第一个订单的status由1改为2。
-
选择OrderList接口,右键map local,选择本地修改后的response文件。
-
再次请求接口时,手机端看到的数据将会是修改后的response文件的数据。
取消Map Local:
通过Tools->Map Local取消。
Map remote:
Map remote将指定的网络请求重定向到另一个网址,Map Remote使用场景:把请求的url替换成另一个url来执行
1.设置Map remote
点击Tools->Map Remote,勾选Enable Map Remote,点击Add,参数项如下:
Breakpoints断点:
Breakpoints是打断点的意思,相当于开发同学的debug功能。在抓包工具Charles里面通过Breakpoints打断点修改数据
https://blog.csdn.net/chengxu_kuangrexintu/article/details/89807737
1.找到需要打断点的请求,右键选择Breakpoints
2.设置断点,Proxy->BreakPoints Settings,弹窗编辑请求
3.重新访问该请求,Charles自动跳转到Breakpoints页面
4.点击Edit Response,切换底部tab至Text,修改所需要的数据,点击执行
Rewrite:
可以对某些匹配请求的header、host、url、path、response、body等进行数据重写;rewrite工具支持正则表达式的写法,例如Math项的value正则式中的组捕获项在Replace的value值中可以使用$1~$n之类的捕获组
1.入口
Charles菜单选择【Tools】->Rewrite
2.添加请求
勾选Enable Rewrite,在左侧栏点击【Add】添加(勾选则代表启动该请求)
新增Location信息填写如下:
新增Type和Action如下:
总结:这样刷新后,匹配到的接口相关数据就会更改
总结
Rewrite可以使用正则更改请求数据;Map Local只能更改请求的reponse数据,只改变reponse值使用Map Local最好;Map remote可以重定向请求的整个url;BeakPoints断点用作调试临时修改请求数据
使用charles 模拟弱网环境
点击proxy中的Throttle settings,打开网络设置页面
首先勾选Enable Throttling,在Throttling preset中可以选择工具默认配置的一些网络状况,上行、下行带宽
============================================================================================================================================
使用Fiddler进行HTTPS抓包
正题:这里介绍 抓包的关键,Fiddler ,Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯。
我们就是用这款软件抓取 ,我们手机app 访问的 资源路径 的。
下面 我们拿实例 来演示下,怎么用fiddler 抓取数据。(以某拍为例吧)。
环境: win7 和 G620S-UL00(华为畅玩)。
准备工作:
首先 我们要下载 Fiddler 这款软件 大家官网下载:http://www.telerik.com/download/fiddler 注意 wind7 wind8 下载不是一样的,官网有详细介绍。自行安装。
安装好 fiddler ,手头有一部Android 手机,同时 还要有无线网,手机和 电脑在同一个无线网络。这些条件具备,我们就可以 开始下面的步骤了。
正题 :Fiddler 主菜单 Tools -> Fiddler Options…-> Connections页签,选中Allow remote computers to connect。
然后,我们重启一下fiddler。
获取PC的IP地址:
获得安装 Fiddler 这台电脑在局域网内的 IP,在手机上设置代理服务器的时候会用到,开始菜单打开运行窗口(快捷键 Win + R),输入 cmd 回车,进入 Windows 命令行工具,输入 ipconfig 回车,获取PC的ip地址:
设置手机代理:
需要手机和安装 Fiddler 电脑在同一WIFI下,手机连接到WIFI。打开手机的WIFI设置界面,选中连接的WIFI,长按,弹出如下界面,选择“修改网络”。
将使用代理服务器打勾,并填上刚才在 PC 机上 ipconfig 获得的 IP 地址 192.168.1.95,端口号填 Fiddler 默认的 8888
点击保存,这样就完成了代理的设置。可以通过Fiddler抓去http数据包了。
这里,我就进入一下某拍的APP。点击其中的一个视频 ,就可以在fiddler 中看到
然后我们选中一行,右键 copy url 就可以拿到 数据了。
这里上图
再上一个连接 http://mvvideo1.meitudata.com/558931da76dda6982.mp4。
不要做坏事。 文章的格式,就忽略了吧。
-------------------------------------------------------------------------------------------------------------------------------
2019.7.22更新, 使用Fiddler 进行https 抓包 首先 用手机浏览器 访问本机ip:端口号 10.0.0.0:8888 下载证书,然后安装证书。
javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
这个 是证书认证问题
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.readTimeout(DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
builder.writeTimeout(DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
builder.connectTimeout(DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
builder.sslSocketFactory(createSSLSocketFactory());
builder.hostnameVerifier(new HostnameVerifier()
@Override
public boolean verify(String hostname, SSLSession session)
return true;
);
mOkHttpClient = builder.build();
private static SSLSocketFactory createSSLSocketFactory()
SSLSocketFactory ssfFactory = null;
try
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[]new TrustAllCerts(), new SecureRandom());
ssfFactory = sc.getSocketFactory();
catch (Exception e)
return ssfFactory;
public class TrustAllCerts implements X509TrustManager
@Override
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException
@Override
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException
@Override
public X509Certificate[] getAcceptedIssuers()
return new X509Certificate[0];
谢谢认真观读本文的每一位小伙伴,衷心欢迎小伙伴给我指出文中的错误,也欢迎小伙伴与我交流学习。
欢迎爱学习的小伙伴加群一起进步:[点击链接加入群聊【编程之美】
以上是关于android抓包工具——fiddler与charles的基本操作(弱网模拟,map local/remotebreakpoint 等)的主要内容,如果未能解决你的问题,请参考以下文章
android抓包工具——fiddler与charles的基本操作(弱网模拟,map local/remotebreakpoint 等)