zoukankan      html  css  js  c++  java
  • charles代理以及关于其抓取https信息的操作

    一直没有写一篇关于charles的文章来记录,但是发现偶尔还是会忘记,所以还是记一下,查起来比较方便。

    首先在安装了charles之后默认的本地代理地址是 127.0.0.1:8888这个地址。如果希望代理本地计算机的http流量或者socks流量,可以将代理地址设置到127.0.0.1:8888这个地址上,就能在charles上查看到现在正在使用的流量了。

    其实我平时常用的代理并不是代理pc上的流量,因为现在大部分现代浏览器都自带可以看包的功能,所以更多的时候,我可能需要使用它来代理我手机上的流量,特别是在测试接口和api的时候。

    首先就是最常用的代理功能,将到达本机的流量映射到其他地址上面去。

    Tool->Map-remote-setting

    出现这个界面

    点击add增加映射设置

    这里就是填写从什么地址映射到什么地址。

    例如我们要去往百度代理到我们自己的地址上来。

    上面就可以设置百度的host www.baidu.com 然后port80 或者8080

    下面设置上我们自己去往的地址 比如 zhizhizhi.me 然后设置端口即可。

    如果要让charles能看到https包里面的内容,首先我们需要在自己的电脑中安装charles的根证书,并且对其进行信任。

    Help->SSLProxying-> Install Charles Root Certificate。 对其进行安装并且对其进行信任。

    然后启用charles的SSL代理

    Proxy-> SSL Proxy Setting

    勾选 Enable SSL Proxying

    并且设置由服务器所属根证书签发的客户端证书,这里我使用的一个p12格式的证书。 然后指定监听的代理host

    至此,charles就可以代理你对目标服务器的https请求了。

    如果你需要charles代理你的手机访问目标地址的https ,还需要在手机上安装charles证书,方法也很简单。

    Help->SSL Proxying-> Install Charles Root Certificate Devices Or Remote Browser 这个时候会给你一个安装证书的内网地址

    访问该地址即可下载安装charles证书。

    这里代理SSL流量的原理也很简单:

     为什么要装charles根证书:

    因为charles最终代理我们的ssl流量是要发回给我们的,而这个过程是我们和本地charles代理的ssl通信,如果我们没有charles签发的根证书,那么我们将无法信任charles转发的任何ssl流量。

    另外由于我们在charles里面设置了和服务器对应的客户端证书PKCS12格式的包文件(pkcs12中包含被根证书签出来的公私钥),所以我们可以解密由指定host服务器发送过来的加密的数据,从而像抓包http包一样看到这些数据包里面的数据。charles负责代替我们和该服务器发送接收加密数据,而我们还需要和chales本身再进行一次通信,这样说 应该就比较明确了。

    Reference:

    https://en.wikipedia.org/wiki/PKCS_12   PKCS12wiki

  • 相关阅读:
    Maven命令行使用:mvn clean package(打包)
    快速构建 Spring Boot 应用
    Spring MVC 表单处理
    Spring Web Hello World 例子
    Spring 事务管理
    开发环境搭建
    考研计算机专业课练习题
    考研计算机自测练习
    考研计算机自测练习答案
    考研计算机专业常见术语
  • 原文地址:https://www.cnblogs.com/piperck/p/6132504.html
Copyright © 2011-2022 走看看