Mac上通过Charles给iPhone配置弱网环境

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mac上通过Charles给iPhone配置弱网环境相关的知识,希望对你有一定的参考价值。

参考技术A 在 iPhone 的 “ 设置 ”–>“ 无线局域网 ” 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888.

到此,Mac端的Charles会有个提示框,提示有设备接入到了监听中,有此弹框,表示配置成功,没得就是配置失败了!!!

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设备:

  1. 从 chls.pro/ssl 下载证书到本地。
  2. 复制到手机sdcard上
  3. 在手机设置 -> 安全 -> 从存储设备安装 中命名并选择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方式:

  1. 使用charles进行抓包,请求希望进行mock测试的接口,如订单列表接口OrderList(修改某个订单的状态)。

  2. 选择OrderList接口,右键save response,将Response保存到本地。(这一步主要是为了获取数据样本)

  3. 修改保存到本地的Response文件,如将第一个订单的status由1改为2。

  4. 选择OrderList接口,右键map local,选择本地修改后的response文件。

  5. 再次请求接口时,手机端看到的数据将会是修改后的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];
    

谢谢认真观读本文的每一位小伙伴,衷心欢迎小伙伴给我指出文中的错误,也欢迎小伙伴与我交流学习。

欢迎爱学习的小伙伴加群一起进步:[点击链接加入群聊【编程之美】

以上是关于Mac上通过Charles给iPhone配置弱网环境的主要内容,如果未能解决你的问题,请参考以下文章

Mac 配置Charles,抓取移动设备数据

iPhone上网络抓包方法详解

charles如何模拟弱网环境

Mac Charles 抓包 iPhone HTTPS 请求,iPhone 要做什么

Mac Charles 抓包 iPhone HTTPS 请求,iPhone 要做什么

charles 模拟手机弱网修改请求参数修改返回值