首页 > 其他分享 >Charles抓取https请求及常见问题解决

Charles抓取https请求及常见问题解决

时间:2023-07-17 17:45:36浏览次数:46  
标签:常见问题 http 请求 证书 Charles 抓取 https

一、背景
APP测试的时候,通常都需要通过抓包工具抓取各类请求,查看接口的入参、返回值等,用于分析定位问题。常用的抓包工具有fiddler、charles等,抓取http的请求比较简单,https的请求稍显复杂。由于更喜欢charles的页面风格,本篇文章主要介绍以下两点:
1、Charles如何抓取电脑端和手机端的https请求;
2、安卓手机无法抓取app https请求的原因和解决方案;

Charles 4.5.6汉化版,赶紧上车,懂的都懂

百度网盘:链接:https://pan.baidu.com/s/1y7KuzSg_SKmtEP4OTRycwg?pwd=52pj

提取码:52pj

注册信息:
用户名:52pojie
注册码:E63519EFB77448393C

二、Charles如何抓取https请求
Charles抓取http请求非常简单,安装好软件后打开记录按钮即可抓取。抓取https请求相对复杂一些,需要一些配置和安装证书。

2.1 Charles https配置
1、菜单栏点击代理》代理设置:

设置代理的端口号,比如设置为:8888,这个端口号后面手机端连接时需要用到:

2、菜单栏点击代理》SSL代理设置:

勾选启用SSL代理,添加主机和端口都为*:

2.2 Charles PC端证书安装

1、PC端证书安装:
菜单栏点击“帮助”》SSL代理》安装charles根证书:

根据步骤一步步往下走:

 

安装完成后,记得去电脑的网络和Internet中设置本地使用代理为Charles开启的代理服务器:

 

踩坑注意:
地址这里要设置:http=127.0.0.1:8080;https=127.0.0.1:8080,不要分开设置前面地址填127.0.0.1,后面端口填:8080,试了这种填法只能抓http请求,无法抓https请求。就直接在地址里面填:http=127.0.0.1:8080;https=127.0.0.1:8080,这样http和https的请求都能抓到。

完成以上步骤,PC端https请求即可正常抓包。

2.3 Charles 手机端证书安装
1、手机端证书安装:
菜单栏点击“帮助”》SSL代理》在移动设备或远程浏览器上安装charles根证书:

 

然后Charles会弹出一个提示框:

根据提示信息,先将手机配置为使用Charles的代理。进入手机设置》WiFi,在使用的WiFi上长按,选择修改网络:

 然后设置代理为“手动”,配置服务器主机IP和端口为Charles的代理,保存:

 Charles会自动弹窗提示有设备接入,询问是否允许,选择允许:

现在,手机上http的请求Charles已经可以正常抓取了,要抓取https的请求,先使用浏览器访问http://chls.pro/ssl下载并安装证书:

 

 

安装完成后,即可抓取手机端的https请求了~

三、安卓手机无法抓取app https请求的原因和解决方案

现象:即使各项配置、证书都完全安装配置好之后,很多使用安卓手机的同学去打开一个APP测试抓包效果时,会发现依然只能抓取http请求,https的请求还是抓取失败:

原因:安卓7.0版本及以上系统对于证书的安全策略做了修改,用户证书只能用于代理浏览器的流量,而APP应用是不会信任这些证书。证书没有被信任,就导致只能抓取http请求,而https这一类的请求则无法抓取。而目前市面上的很多手机的安卓版本已经远远大于7.0了:

 

解决方案:
方案一:IOS和安卓<7.0的版本没有此问题,因此如果条件允许,可以换为苹果手机或安卓版本低于7.0版本的老手机去抓取;

方案二:研发人员可以代码中设置不启用该安全策略生成测试APP包,所以通常研发打的测试APP包是没有该问题的,可以正常抓取。因此当正式发布对外的APP无法抓取https请求,可以用测试的APP包来抓取请求;

如果你也碰到同样的问题,恰好你的手机也是安卓手机,可以先看看自己是不是抓的是正式APP的请求,然后试试用公司的APP的测试包先看看是否能正常抓包,而不是花很多的时间去排查配置、证书的问题哦~

标签:常见问题,http,请求,证书,Charles,抓取,https
From: https://www.cnblogs.com/amber10086/p/17560756.html

相关文章

  • https
    https证书和私钥替换为自己的;SSL动态库在DELPHI安装目录里面可全文搜索到。测试 ......
  • iframe嵌套的https服务,权限开放设置
    1、场景:chatGPT开发语音功能,部署服务需要https协议,有个独立的门户需要将服务以iframe嵌入到系统中2、问题:chatGPT语音服务无法弹出授权开启麦克的提示3、原因:iframe默认是关闭了相关权限4、处理:参考说明<iframe>标签的sandbox属性是一个布尔属性,当存在时表......
  • 初识指针以及一些创建指针变量的常见问题和一些避免使用错误指针的方法
    在C语言中,指针是一种变量,用于存储另一个变量的内存地址。指针可以指向任何数据类型的变量,包括基本数据类型(如整型、字符型等)和复合数据类型(如数组、结构体等)。通过指针,我们可以直接访问和修改指向的变量的值,而不需要知道变量的名称。指针的声明使用星号(*)来表示,例如:int*ptr;//......
  • 信息安全 -- 数据加密 -- HTTPS原理
    对称加密:同一个密钥进行加解密,典型的对称加密方式AES算法优点:运算速度快缺点:密钥需要信息交换的双方共享,一旦被窃取,消息会被破解 非对称加密:公钥加密,私钥解密;或者私钥加密,公钥解密优点:私钥严格保密,公钥任意分发,黑客获取公钥无法破解密文缺点:运算速度非常慢非对称加密的......
  • 解决浏览器自动将http跳转至https导致无法访问的问题
      最近在宝塔面板申请免费的SSL证书后,部署证书的80端口下的网站可以通过https正常访问,但其他未部署证书的端口也被强制跳转至https请求,导致浏览器提示不安全从而无法访问。宝塔的8888端口也不能访问,当时那是一个慌,当我尝试了各种方法,如重新放行443端口、重新配置nginx反向代理、......
  • httplib库的使用(支持http/https)
    httplib库的使用,支持http/httpshttplib库简介1.文件目录2.client端2.1快速搭建一个client端2.2HTTPS2.3下载文件2.4GET大数据2.5POST大数据2.6上传文件3.server端的简单使用4.其他资料httplib库简介httplib库是一个以C++11特性编写的库,所以编译器也需要能......
  • Oracle学习笔记:parallel并行处理 --转载 https://blog.csdn.net/w892824196/article/
    在使用oracel查询时,可以通过并行提高查询速度。例如:select/*+parallel(a,6)*/count(1)fromtable_namea;强行启用并行度来执行当前SQL。加上这个说明之后,可以强行启用Oracle的多线程处理功能,提高效率。但本身启动这个功能,也是要消耗资源与性能的。所有,一般都会在返回记......
  • 老杜 JavaWeb 讲解(十) —— HttpServletRequest接口源码分析
    (十二)HttpServletRequest接口源码分析对应视频:21-HttpServletRequest接口12.1介绍HttpServletRequest是一个接口,全限定名称:jakarta.servlet.http.HttpServletRequestHttpServletRequest接口是Servlet规范中的一员。HttpServletRequest接口的父接口:ServletRequest......
  • 【AGC】云数据库开发常见问题汇总
    ​ 【问题背景】近期越来越多的开发者通过SDK使用云数据库,云数据库是一款支持端云数据协同管理、可扩展的Serverless数据库产品,提供简单易用的多平台原生SDK,您的应用可以通过SDK直接访问云侧数据库。同时,云数据库还支持通过ServerSDK直接管理云侧数据,实现云侧数据的高效管理。......
  • 什么是HTTPS?与HTTP的区别?
    HTTP(HypertextTransferProtocol)和HTTPS(HypertextTransferProtocolSecure)是用于在网络上传输数据的两种协议。它们之间的主要区别在于安全性和数据传输的方式。在本文中,我们将详细解释HTTP和HTTPS的区别,并介绍HTTPS证书的概念、使用方法和作用。一、HTTP的基本概念和工作原理H......