Charles抓取HTTPS Windows Android iOS 图文详细

文章目录

  • 背景
  • 操作原理
  • windows 安装Charles
  • Charles配置
    • 第一步:配置HTTP代理,这步与抓取HTTP请求是一样
    • 第二步:配置SSL代理
    • 第三步 :为手机配置代理
      • iPhone 代理配置
      • Android 代理配置
    • 第四步:安装根证书
      • iPhone 安装charles证书
      • Android 安装charles证书
      • windows 安装charles证书
  • 抓包
    • 正常抓包
    • 抓包乱码

背景

后端小伙伴接口文档没写,问接口时,回复说web已经实现了,抓包看接口和参数。虚心的应了句,试试看。结果也不是如此,支付下单的后端接口到能直接调用微信支付的仅在微信内打开h5才能自然支付,此时抓包不再是f12的事情了。需要使用代理,本文主要讲windows 上Charles抓手机上的https包,包括Android 和 ios。

操作原理

关键的操作思想:

  1. 构造一个中间人代理,它有能力完成TLS/SSL握手
  2. 弄到一个根证书,并用它生成签名认证的代理服务器证书

Charles就是一个理想的中间人,它支持SSL握手,可以自动根据根证书生成一个签名的服务器证书,并且它的官网为我们提供了一个根证书。
我们要做的就是在客户端安装好这个根证书,然后让我们的操作系统信任它。对App来说,需要设法在IOS或Android上装上这个官网提供的根证书。
完成上述步骤后,App再指定Charles(电脑)为它的代理服务器,这时,App(或手机浏览器)请求的服务器证书就是Charles自动生成的代理服务器证书。如果Charles的根证书已被信任,这个自动生成的代理服务器证书是有效的,使用它App和Charles的TLS握手可以顺利完成。

windows 安装Charles

官网下载或其他网站下载都可以,官网现状是30天免费。
下载完成后双击运行,一直下一步直到安装结束。

Charles配置

第一步:配置HTTP代理,这步与抓取HTTP请求是一样

在这里插入图片描述
选择在8888端口上监听,然后确定。勾选SOCKS proxy,还能截获到浏览器的http访问请求。
说明:这里的8888端口作用是监听端口,手机设置代理时就要填写这个端口。

在这里插入图片描述

第二步:配置SSL代理

在charles的 Proxy选项选择SSL Proxy Settings
在这里插入图片描述
接着在弹出的对话框中点击add,添加需要监视的域名。域名支持 *号通配符,如:抓取所有的https请求,可以填写 *:443
如果想要抓取qq.com的域名,可以填写 *.qq.com
鄙人就填了*:443,外加一个18043端口
在这里插入图片描述

第三步 :为手机配置代理

在手机无线中配置手动代理,输入安装Charles的电脑的网络地址,端口填8888(上文中提到过)。

iPhone 代理配置

我的是iphone12,系统14.7

  1. 设置 - 无线局域网 找到当前网络,点击信息
    在这里插入图片描述

  2. 接着拉到底
    在这里插入图片描述

  3. 打开配置代理,选择手动,填写电脑ip(图中为我的IP,请修改为your电脑ip),监听端口(8888)进行配置,然后记得存储(保存)
    在这里插入图片描述

Android 代理配置

我的华为 nova3e Android 9

  1. 设置 - 无线与网络 - WLAN 找到当前连接的网络并长按,选择修改网络
    在这里插入图片描述
  2. 勾选 显示高级设置 ,然后显示代理后选择手动
    在这里插入图片描述
  3. 设置代理服务器后记得保存
    在这里插入图片描述

第四步:安装根证书

这里安装根证书是指Charles的根证书,包括电脑和手机都需要安装。手机安装证书时,必须执行到了上面第三步,手机已经设置好了代理(此时不能访问百度或其他网站,不要慌)。

iPhone 安装charles证书

  1. 在Safri上打开Charles的根证书下载网址: chls.pro/ssl 。
    在这里插入图片描述

  2. 下载完之后会提示 到设置app中查看描述文件(证书),点击关闭
    在这里插入图片描述

  3. 设置 - 通用 中可以找到 "描述文件"选项,并打开
    在这里插入图片描述

  4. 找到刚才下载的证书,点击安装,安装过程中需要输入屏幕密码,没有需要设置屏幕密码
    在这里插入图片描述
    在这里插入图片描述

  5. 此时会有提示,只管继续安装
    在这里插入图片描述
    安装成功后如下:
    在这里插入图片描述

  6. 去设置信任(非常关键)
    设置 - 通用 - 关于本机, 拉到底后看到 证书信任设置 点开
    在这里插入图片描述
    在这里插入图片描述
    开启证书信任:
    在这里插入图片描述

Android 安装charles证书

  1. 在自带浏览器上打开Charles的根证书下载网址: chls.pro/ssl 。前提也是Windows charles 先配置好代理(完成第二第三步),手机网络设置好代理服务器。
    在这里插入图片描述
    下载后无法打开无法识别(不要慌)
    在这里插入图片描述
    在这里插入图片描述

  2. 设置 - 安全和隐私 - 更多安全设置 - 加密和凭据
    在这里插入图片描述
    接着选择 ”从存储设备安装“
    在这里插入图片描述
    再选择下载的证书文件
    在这里插入图片描述

  3. 安装证书,需要输入屏幕密码或设置屏幕密码(没有的话),弹框中选择WLAN
    在这里插入图片描述

  4. 安装成功后可以在 ”用户凭据“中查看
    在这里插入图片描述
    在这里插入图片描述
    至此Android 证书安装完成,可以在 受信任的凭据 - 用户 中看到刚才的证书是受信任的
    在这里插入图片描述

windows 安装charles证书

  1. charles 菜单 help - SSL Proxying - Install Charles Root Certificate
    在这里插入图片描述

  2. 弹出如下提示框,选择安装证书
    在这里插入图片描述
    安装过程中不要选择个人用户,要选本地计算机(足够的权限)
    在这里插入图片描述

  3. 选择及那个所有证书放入指定的受信任的存储区
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 安装完成后可以查看证书的详细信息和路径
    在这里插入图片描述
    在这里插入图片描述

抓包

手机代理配置好,证书配置好,手机开始访问期望的接口或网站

正常抓包

能看到明文的参数和响应数据
在这里插入图片描述

抓包乱码

  1. SSL Proxying not enabled for this host: enable in Proxy Settings, SSL locations
    在这里插入图片描述
    点击后面的Notes查看原因:
    在这里插入图片描述
    这样提示是因为没有开启ssl(https) 的代理,这样去开启
    在这里插入图片描述
    在这里插入图片描述
    重新开始抓包即可(可不重启charles),需要手机刷新页面
    在这里插入图片描述
  2. 加密数据
    这种情况下是接口开发人员把数据加密传输的,要解密已经不是本文要讲的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css线条伸缩_CSS3弹性伸缩布局之box布局

CSS3弹性伸缩布局简介2009年,W3C提出了一种崭新的方案----Flex布局(即弹性伸缩布局),它可以简便、完整、响应式地实现各种页面布局,包括一直让人很头疼的垂直水平居中也变得很简单地就迎刃而解了。但是这个布局方式还处于W3C的草案阶段&#…

Android代码安装apk程序

文章目录一、高低版本兼容代码及配置1.java代码2.AndroidManifest.xml 配置ContentProvider3.paths xml 配置二、老版本代码三、可能出的问题及处理一、高低版本兼容代码及配置 高版本提高了sdcard、 app文件空间的访问权限,高低版本的系统api有一定区别&#xff0…

Android adb 安装apk程序

文章目录ADB简单介绍安装命令安装失败情况adb 安装测试包adb 安装卸载的所有命令摘要前言多数情况下,用户都是从应用商店或某网页下载apk后从手机上直接安装apk文件,在调试或下载到电脑上时候,我们就可以直接通过adb安装到手机。在测试小伙伴…

XML十六进制无效的字符(0x0b 0x0c 0x02)

文章目录解决方法ASCII“字符”1、ASCII 打印字符2、ASCII 非打印控制字符3、扩展 ASCII 打印字符4、ASCII 之外ASCII 字符输入方法与常用地方1、在文档中插入 ASCII 字符2、输入方法前言xml 中包含了非打印字符的情况下,即使是放在cdata 中,在不同平台上…

tab栏圆点按钮_uniapp tabbar上的小圆点

需求在tabbar的图标右侧显示和隐藏小圆点。一般表示有新消息、新更新。基本代码序号从0开始计算。uni.showTabBarRedDot({index:1});uni.hideTabBarRedDot({index:1});修改代码App.vue或index页在App.vue的onLaunch周期或者是index页的onLoad加入代码,判定是否需要显…

Android OpenGLES2.0(一)OpenGLES2.0基础介绍

文章目录什么是OpenGL ES?OpenGL ES可以做什么?OpenGL ES版本及Android支持情况OpenGL ES 2.0的优点OpenGL ES 2.0中基本概念顶点着色器片元着色器着色器语言坐标系图形的绘制投影光照纹理映射其它OpenGL ES 2.0过程及理解什么是OpenGL ES? O…

如何 方法内指令重排 进制_谈谈指令重排

这个知识点也是很多人说不清道不明的地方,感觉都知道,说又说不出来。为什么会这样呢?因为这几个字,很容易被当成动词去理解,其实正确的理解是当成名词,即指令重排现象。那什么时候会产生指令重排现象呢&…

Windows ‘ls‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

文章目录前言原因解决办法前言 Windows和mac混用或Windows与linux混用的情况下,在windows dos窗口随手一个ls,出现了 ‘ls’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 原因 ls是linux的命令,不是windows的命令,win…

python问题解决了吗_Python 问题怎么解决?

展开全部主要问题和解决方法如下:中文路径的问题:在D盘下保32313133353236313431303231363533e58685e5aeb931333365633939存一个名字为‘中文.txt‘的文件。运行如下测试代码:# -*- coding: utf-8 -*-fopen(D:\\中文.txt, r)print f.read()&a…

Linux ls 命令使用介绍

文章目录命令格式命令功能常用参数常用示例示例1 列出文件夹下的所有文件和目录的详细资料示例2 列出当前目录中所有以“t”开头的目录的详细内容,示例3 只列出文件下的子目录命令:示例4 列出目前工作目录下所有名称是以s开头的档案,越新的排…

exls导入数据库 php_PHP读取excel文件并导入数据库

PHPExcel是一个PHP类库,用来帮助我们简单、高效实现从Excel读取Excel的数据和导出数据到Excel。下面是PHPExcel读取的使用教程:1.首先下载PHPExcel2.下载好文件,解压可以得到如下文件:为了使用方便,我们可以在根目录创…

Linux cd 命令使用介绍

文章目录1. 命令格式2. 命令功能3. 常用范例示例1:进入系统根目录cd /2:使用 cd 命令进入当前用户主目录3:跳转到指定目录4:返回进入此目录之前所在的目录5:把上个命令的参数作为cd参数Linux cd 命令是Linux中最基本的…

netty冲突 play sbt_《Netty官方文档》本地传输接口

原文链接 译者:gm777自4.016版本以来, Netty提供了本地的socket传输使Linux系统可以使用JNI(JAVA本地接口)。这个传输接口不仅有着高性能并且产生更少的垃圾,所以你也许会想尝试使用一下。使用本地传输接口由于这个本地传输接口是与NIO传输接…

Linux pwd 命令使用介绍

文章目录1.命令格式2.命令功能3.常用参数4.常用实例实例1:用 pwd 命令查看默认工作目录的完整路径实例2:使用 pwd 命令查看指定文件夹Linux中用 pwd 命令来查看”当前工作目录“的完整路径。每当我们在终端…

java参数传入泛型类型_Java泛型参数界定到任何一个类型的范围

是否有一种语法或解决方法来将泛型类型参数限制为任何一种类型的类型?我知道您可以将类型限制为所有类型的所有类型(即AND逻辑):public class MyClass & Serializable> { } // legal syntax有OR逻辑版本,就是这样的:public class MyCl…

Linux mkdir 命令使用介绍

文章目录1.命令格式2.命令功能3.命令参数4.命令实例实例1:创建一个空目录实例2:递归创建多个目录或一次创建多级目录实例3:创建权限为777的目录实例4:创建新目录都显示信息实例5&…

jmeter修改redis_jmeter如何访问redis服务缓存

Redis(REmote DIctionary Server)是一个开源的内存数据结构存储,用作数据库,缓存和消息代理。作为内存数据库,它将所有数据保存在RAM中。Redis在读取/写入数据时实现高性能,并且在您需要确保在所有测试服务器上使用唯一数据时也很…

Linux rm/rmdir 命令使用介绍

文章目录1.命令格式2.命令功能3.命令参数4.命令实例1. 删除文件,系统会先询问是否删除。2. 强行删除文件,系统不再提示3. 删除任何.txt文件;删除前逐一询问确认4. 将目录及子目录中所有档案删除…

window服务器cpu过高的排查_线上服务器发生CPU占用率过高应该如何排查并定位问题?...

国外开发者平台 HankerRank 发布的 2018 年开发者技能调查报告中有一项关于"雇主最看重哪些核心能力"的调查,结果显示如下:排名前几的比较受重视的能力分别为:解决问题、编程语言熟练程度、Debug、系统设计和性能优化。解决问题的能…

Linux mv 命令使用介绍

文章目录1.命令格式2.命令功能3.命令参数4.命令实例1、文件改名( 重命名)2、移动文件3、将test目录下的文件text1.txt text2.txt text3.txt移动到目录mv中。4、将文件file1改名为file2,如果file…