首页 > 其他分享 >Charles 代理https请求

Charles 代理https请求

时间:2024-05-14 08:57:25浏览次数:16  
标签:请求 Charles 代理 发送 https 解析 HttpURLConnection

起因

需要调用一个https服务,获取token,再携带token调用对应系统发送报文。

在postman测试中,token可以正常获取,携带token并发送GET请求也可以正常发送请求返回数据。

但是在应用程序使用中发现GET请求始终无法调用成功,response状态码405。应用使用HttpURLConnection进行请求,后续删除部分不使用的代码后居然通了。

想深入理解https请求道理经历了什么改变,从不可用变为可用。

Wireshark拦截应用程序https请求数据

最初的想法使用wireshark监控本地网络数据,找到对应https解析后观察问题原因。

跟据TLS协议握手逻辑,在wireshark中使用正确证书、密钥等方式,将请求解析。

密钥获取方式:

  1. 通过windwsi配置环境变量SSLKEYLOGFILE,再通过chrome浏览器导出到密钥文件中,通过wireshare导入密钥文件,进行解析。

  2. 通过Fiddler代理请求,然后导出证书,再通过证书生成密钥等文件信息,导入wireshare,进行解析。

可惜2种方式都没解决掉。

搜索原因,分析为tls1.2本地与服务端协商的套件为TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,现在浏览器默认使用ECDHE的加密类型,作为套件使用,wireshare无法处理此类型https请求解析。

严重怀疑:1、直接通过Fiddler就可以解决我的需求。2、Wireshark还是没用明白。

Charles安装

主要就是以下步骤:

  1. 安装后的注册(否则30天试用)。
  2. 对于SSL代理的配置,需要把浏览器授信根证书引入程序。
  3. 设置SSL代理的域名、端口。

postman的https请求代理

开启Charles的拦截后,发送postman直接拦截成功。

观察请求头数据,一切正常加密套件确认为TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384

应用程序的https请求代理

开启Charles的拦截后,应用发送请求居然没显示拦截???

查了各种资料,对Charles针对性配置,仍然无效。再对windows系统进行配置仍然无效。判断应为程序问题,程序使用HttpURLConnection发送请求,发现需要设置Proxy对象,才能成功被Charles拦截。

观察后发现HttpURLConnection存在一个坑,虽然在编写过程设置了请求为GET方式,但是通过HttpURLConnection获取了输出流,虽然没有传入任何参数,请求方式在Charles中显示为POST。

思考

  1. Charles本质为代理或者说是中间人攻击,https请求必须流经Charles才能被拦截到,例如:A -> Charles -> 计算机网络底层 -> B。
  2. HttpURLConnection发送请求的方式,网络层级应该比Charles更低。
  3. 但是postman为什么直接能被Charles拦截?是因为网络层级与Charles一致或更高么。
  4. Wireshark的所处的网络层级一定比Charles低,那是否可以通过服务器证书解析请求、响应信息呢?

总结

  1. Fiddler确实也能解决这个问题,找到的资料是通过fiddler将https代理到另一个本地服务器,解析信息。
  2. Wireshark应该可以解析浏览器发送的https请求,通过应用貌似需要程序特殊配置。
  3. HttpURLConnection发送GET请求失败,居然因为调用getOutputStream()方法后请求类型变为了POST,哪怕是没有对输出流添加任何数据。

巨人的肩膀

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

charles高级篇:过滤请求、串改请求、上行下行超时、弱网

使用 RSA 密钥交换方式时,使用私钥解密 HTTPS 流量数据 (timd.cn)

使用 Key Log 解密 TLS 流量 (timd.cn)

使用 MITM 的方式,解密 HTTPS 流量 (timd.cn)

计算机网络笔记 (timd.cn)

HTTPS中间人攻击实践(原理·实践)

如何通过Wireshark查看HTTPS、HTTP/2网络包(解码TLS、SSL)

抓包工具Charles使用,中间人攻击,手机抓包 - 技术改变命运Andy - 博客园 (cnblogs.com)

清晰图解https如何防范中间人攻击_公钥密码体系防止中间人-CSDN博客

标签:请求,Charles,代理,发送,https,解析,HttpURLConnection
From: https://www.cnblogs.com/hr0552/p/18183926

相关文章

  • http及https模拟工具使用总结及客户端及服务端模拟代码样例
      一、工具介绍1、restclient-1.2.jar为客户端请求工具,可以调用任何的http及https的服务,可以任意调用https的网页地址(比入百度等)及postman模拟的服务。 2、HttpMockServerTool.jar只能模拟http的服务端,不能模拟https的。 需要自己造个返回响应文档 1.txt使用参考......
  • 设计模式之代理模式
    为什么要代理?解决在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对......
  • distribution镜像仓库代理缓存
    本文在《学习distribution》之后,梳理一份基础的用于代理远端仓库的基础配置。配置需求镜像地址在远端定期清理缓存优先没有任何中间件服务需要健康检查需要暴露prometheus指标优先外部正式的HTTPS证书配置明细version:0.1log:level:debugfields:service......
  • npm install 报错 ---》npm ERR! request to https://registry.npmjs.org/react faile
    1、npminstall报错E:\wsg\AWC_TEST\stage>npminstallreactreact-domnpmERR!codeCERT_NOT_YET_VALIDnpmERR!errnoCERT_NOT_YET_VALIDnpmERR!requesttohttps://registry.npmjs.org/reactfailed,reason:certificateisnotyetvalidnpmERR!Acomplete......
  • 补档 https://github.com/taichi-framework/TaiChi/wiki/FAQ/9eeeef88cdbcee6a2834969
    taichi-framework/TaiChiPublicNotificationsFork 572 Star 5.9kCodePullrequestsActionsWikiSecurityInsightsFAQ weishueditedthispage onNov2,2018 · 17revisions如何使用点击右下角浮动按钮,然后选择“创建应用”......
  • 补档 https://github.com/taichi-framework/TaiChi/wiki/%E5%87%86%E5%A4%87%E4%BA%8B
    taichi-framework/TaiChiPublicNotificationsFork 570 Star 5.9kCodePullrequestsActionsWikiSecurityInsights准备事项 weishueditedthispage onJan22,2019 · 1revision太极·Magisk准备事项数据备份系统数据......
  • 补档 https://github.com/taichi-framework/TaiChi/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE
    taichi-framework/TaiChiPublicNotificationsFork 572 Star 5.9kCodePullrequestsActionsWikiSecurityInsights常见问题 weishueditedthispage onMar1,2019 · 14revisionsQ:无法触发Magisk版?A:建议使用Magisk17.x版......
  • 补档 https://github.com/taichi-framework/TaiChi/wiki/%E5%A6%82%E4%BD%95%E4%BD%BF
    taichi-framework/TaiChiPublicNotificationsFork 569 Star 5.9kCodePullrequestsActionsWikiSecurityInsights如何使用 weishueditedthispage onJan22,2019 · 6revisions如何使用太极·Magisk?说明太极·Magisk......
  • 七十八、fiddler、Charles请求重定向---路由转发Map Remote
    一、fiddlerfiddler、charles的MapRemote(请求重定向)功能,说白了就是你本来要请求A接口拿数据,重定向后,你实际请求的是B接口,拿到的是B接口返回的数据。     二、Charles......
  • MaxRetryError("HTTPSConnectionPool(host='huggingface.c
    问题记录:(chat)root@dsw-372547-597b6db8d7-sn86f:/mnt/workspace/langchain-ChatGLM#pythoninit_database.py--recreate-vsrecreatingallvectorstores2024-05-1010:06:10,715-faiss_cache.py[line:92]-INFO:loadingvectorstorein'samples/vector_store......