Android Charles抓包,怎样抓包

这篇具有很好参考价值的文章主要介绍了Android Charles抓包,怎样抓包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Android端Charles抓包

作者:杨充
来源:https://juejin.cn/post/6874903020677791758

目录介绍
  • 01.下载安装
  • 02.抓包代理设置
  • 03.抓包Https操作
  • 04.抓包原理介绍
  • 05.抓包数据介绍
  • 06.常见问题总结
  • 07.Android拦截抓包

01.下载安装

  • 下载地址(下载对应的平台软件即可)
    • www.charlesproxy.com/download/
  • 下载破解文件
    • assets.examplecode.cn/file/charle…
    • 打开Finder,在应用程序中选择Charles并右键选择显示包内容
    • 显示包内容后在Content/Java目录下将破解文件复制过来替换掉原文件即可
    • 如果打开Charles时提示:程序已损坏,打不开。您应该将它移到废纸篓。此时需要在终端中执行以下命令即可:sudo spctl --master-disable

02.抓包代理设置

  • charles代理设置
    • 可以设置抓包数据类型,包括http与socket数据。可以根据需要在proxies栏下勾选。这里简单操作进行设置,Proxy —> Proxy Settings默认端口是8888,根据实际情况可修改。
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UIPV5P0V-1684069809248)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/89a88baa0a3747dea6bbc4b89eec16fc~tplv-k3u1fbpfcp-zoom-1.image)]
  • Android手机代理设置
    • 首先获取电脑ip地址
      • 第一种方式:查看本机IP地址:Help —> Local IP Addresses
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EnHVXhge-1684069809250)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f0b6dc7968464cf597268286aecf4d83~tplv-k3u1fbpfcp-zoom-1.image)]
      • 第二种方式:命令行方式,输入ifconfig即可
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jnT8K2ci-1684069809251)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4c92a5b7d40f4bf59921a4f824ed0394~tplv-k3u1fbpfcp-zoom-1.image)]
    • 然后打开手机设置代理
      • 注意:手机需要和电脑使用同一个Wi-Fi网络,这是前提!!!
      • 操作步骤:打开WiFi列表 —> 长按连接的WiFi修改网络设置代理 — > 设置代理信息
        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YYyJhGix-1684069809251)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0380983c56404b8d87f4b746d33aa39c~tplv-k3u1fbpfcp-zoom-1.image)]
  • 最后抓包如下
    • 抓包数据如下所示
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xrQG4luS-1684069809252)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/10cfb65297484292a5e6d281f29b14c9~tplv-k3u1fbpfcp-zoom-1.image)]

03.抓包Https操作

  • 需要做哪些操作

    • 1.电脑上需要安装证书
    • 2.手机上需要安装证书
    • 3.Android项目代码设置兼容
  • 1.电脑上需要安装证书

    • 第一步安装证书:help —> SSl Proxying —> install charles root certificate —> 安装证书
    • 第二步设置SSL属性:Proxy —> SSL Proxy Settings —> 然后add操作(设置port为443)。如下所示
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7S06V777-1684069809252)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ec7c67168b914e18b645129d8d60aa28~tplv-k3u1fbpfcp-zoom-1.image)]
    • 然后抓包试一下,会发现Android7.0手机之前可以抓包,但是Android7.0之后是无法抓包的
      • 报错信息:客户端SSL握手失败:处理证书时出现未知问题(certificate_unknown)
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e81uLKwS-1684069809253)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/8fd031a7898a4e7a8fa5aa08d7beb242~tplv-k3u1fbpfcp-zoom-1.image)]
    • 如何解决在Android7.0之后也可以抓包https信息,接着往下看。
  • 2.手机上需要安装证书

    • 第一步下载证书
      • 打开浏览器,输入:chls.pro/ssl,就会自己下载到手机上,这里需要记住下载完成保存到本地的路径。
    • 第二步安装证书
      • 设置 —> 更多设置 —> 系统安全 —> 加密与凭据 —> 从SD卡安装,选择之前保存证书的路径。
      • 注意,有的手机是直接点击下载的文件即可安装……
    • 安装操作如下图所示
      • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5ii1Pfs1-1684069809253)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/14635e45662243ca9bf84c06e9342944~tplv-k3u1fbpfcp-zoom-1.image)]
  • 3.Android项目代码设置兼容

    • 添加安全配置文件。如下所示:

    • java.security.cert.CertPathValidatorException: Trust anchor for certification path not found 这个异常,解决方案如下所示:

      <?xml version="1.0" encoding="utf-8"?>

    //清单文件配置

    • Android 7.0及以上为何不能轻易抓取到Https请求的明文数据?
      • 在Android 7.0(API 24 ) ,有一个名为“Network Security Configuration”的新安全功能。这个新功能的目标是允许开发人员在不修改应用程序代码的情况下自定义他们的网络安全设置。如果应用程序运行的系统版本高于或等于24,并且targetSdkVersion>=24,则只有系统(system)证书才会被信任。所以用户(user)导入的Charles根证书是不被信任的。
  • 抓https最后结果如下所示

    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PFXLPiWa-1684069809254)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/877a24aeeb17435585d340e8beaa33bf~tplv-k3u1fbpfcp-zoom-1.image)]
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vFFpeBjE-1684069809254)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/87765c0fd0f148bcb867f69229cb3f1c~tplv-k3u1fbpfcp-zoom-1.image)]

04.抓包原理介绍

  • 1.抓包的原理:
    • 代理。客户端请求->经过代理->到达服务端 服务端返回->经过代理->到达客户端
  • 2.任何Https的 app 都能抓的到吗?
    • 7.0以下是可以的,只要手机里安装对应CA证书,比如用charles抓包,手机要安装charles提供的证书就行。
    • Android 7.0 之后,Google 推出更加严格的安全机制,应用默认不信任用户证书(手机里自己安装证书),自己的app可以通过配置解决,但是抓其它app的https请求就行不通。
  • 3.如何避免抓包
    • 1.基于抓包原理的基础上,直接使用okhtttp禁止代理,就可以了 builder.proxy(Proxy.NO_PROXY);经过测试,可以避免抓包
    • 2.直接使用加密协议,全是字段乱码, 把域名换装IP。这样基本别人很难抓到,像混淆一样
  • 4.charles抓包原理图
    • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-afsT3FuH-1684069809255)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/610be0fb64d74013ab8d3cc9cd783207~tplv-k3u1fbpfcp-zoom-1.image)]
  • 5.大概步骤流程
    • 第一步,客户端向服务器发起HTTPS请求,charles截获客户端发送给服务器的HTTPS请求,charles伪装成客户端向服务器发送请求进行握手 。
    • 第二步,服务器发回相应,charles获取到服务器的CA证书,用根证书(这里的根证书是CA认证中心给自己颁发的证书)公钥进行解密,验证服务器数据签名,获取到服务器CA证书公钥。然后charles伪造自己的CA证书(这里的CA证书,也是根证书,只不过是charles伪造的根证书),冒充服务器证书传递给客户端浏览器。
    • 第三步,与普通过程中客户端的操作相同,客户端根据返回的数据进行证书校验、生成密码Pre_master、用charles伪造的证书公钥加密,并生成HTTPS通信用的对称密钥enc_key。
    • 第四步,客户端将重要信息传递给服务器,又被charles截获。charles将截获的密文用自己伪造证书的私钥解开,获得并计算得到HTTPS通信用的对称密钥enc_key。charles将对称密钥用服务器证书公钥加密传递给服务器。
    • 第五步,与普通过程中服务器端的操作相同,服务器用私钥解开后建立信任,然后再发送加密的握手消息给客户端。
    • 第六步,charles截获服务器发送的密文,用对称密钥解开,再用自己伪造证书的私钥加密传给客户端。
    • 第七步,客户端拿到加密信息后,用公钥解开,验证HASH。握手过程正式完成,客户端与服务器端就这样建立了”信任“。
    • 在之后的正常加密通信过程中,charles如何在服务器与客户端之间充当第三者呢?
    • 服务器—>客户端:charles接收到服务器发送的密文,用对称密钥解开,获得服务器发送的明文。再次加密, 发送给客户端。
    • 客户端—>服务端:客户端用对称密钥加密,被charles截获后,解密获得明文。再次加密,发送给服务器端。由于charles一直拥有通信用对称密钥enc_key,所以在整个HTTPS通信过程中信息对其透明。
  • 6.总结一下
    • HTTPS抓包的原理还是挺简单的,简单来说,就是Charles作为“中间人代理”,拿到了服务器证书公钥和HTTPS连接的对称密钥,前提是客户端选择信任并安装Charles的CA证书,否则客户端就会“报警”并中止连接。这样看来,HTTPS还是很安全的

05.抓包数据介绍

  • HTTP请求包的结构

    • 请求报文

      • 请求报文结构格式:

        请求行: <method> <request-URL> <version>
        

        头部:
        主体:

      • 请求报文结构示意图:

        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RsnsWCnS-1684069809256)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/2ddaa81110db4c619bc1094fa23ee7a4~tplv-k3u1fbpfcp-zoom-1.image)]
      • 例子:

        • 请求了就会收到响应包(如果对面存在HTTP服务器)

          POST /meme.php/home/user/login HTTP/1.1
          

          Host: 114.215.86.90
          Cache-Control: no-cache
          Postman-Token: bd243d6b-da03-902f-0a2c-8e9377f6f6ed
          Content-Type: application/x-www-form-urlencoded

          tel=13637829200&password=123456

    • 常见的是那些

      • User-Agent:产生请求的浏览器类型。
      • Accept:客户端可识别的响应内容类型列表;
      • Accept-Language:客户端可接受的自然语言;
      • Accept-Encoding:客户端可接受的编码压缩格式;
      • Host:请求的主机名,允许多个域名同处一个IP 地址,即虚拟主机;
      • Connection:连接方式(close 或 keep-alive);
      • Cookie:存储于客户端扩展字段,向同一域名的服务端发送属于该域的cookie;
  • HTTP响应包结构

    • 响应报文

      • 响应报文结构格式:

        状态行:  <version> <status> <reason-phrase>
        

        响应头部:
        响应主体:

      • 响应报文结构示意图:

        • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ib6BetZn-1684069809257)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b6ed92e417c74163959f372a8f391335~tplv-k3u1fbpfcp-zoom-1.image)]
      • 例子:

        HTTP/1.1 200 OK
        

        Date: Sat, 02 Jan 2016 13:20:55 GMT
        Server: Apache/2.4.6 (CentOS) PHP/5.6.14
        X-Powered-By: PHP/5.6.14
        Content-Length: 78
        Keep-Alive: timeout=5, max=100 Connection: Keep-Alive
        Content-Type: application/json; charset=utf-8

        {“status”:202,“info”:“\u6b64\u7528\u6237\u4e0d\u5b58\u5728\uff01”,“data”:null}

    • 常见的响应头部参数

      • Allow 服务器支持哪些请求方法(如GET、POST等)。
      • Content-Encoding 文档的编码(Encode)方法。
      • Content-Length 表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。
      • Content-Type 表示后面的文档属于什么MIME类型。
      • Server 服务器名字。
      • Set-Cookie 设置和页面关联的Cookie。
      • ETag:被请求变量的实体值。ETag是一个可以与Web资源关联的记号(MD5值)。
      • Cache-Control:这个字段用于指定所有缓存机制在整个请求/响应链中必须服从的指令。
  • 响应报文状态码

    • 包含了状态码以及原因短语,用来告知客户端请求的结果。

    • 关于状态码,可以看这篇文章,http状态码。 状态码 类别 原因短语
      1XX Informational(信息性状态码) 接收的请求正在处理
      2XX Success(成功状态码) 请求正常处理完毕
      3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
      4XX Client Error(客户端错误状态码) 服务器无法处理请求
      5XX Server Error(服务器错误状态码) 服务器处理请求出错

06.常见问题总结

  • 1.配置好后无法打开APP
    • 在我们抓取时碰到个别APP在配置代理后无法打开,这个主要是因为该APP做了防止抓取处理,比如校验https的证书是否合法等,这种解决方法可以通过反编译APP,查看源码解决,难度较大。
  • 2.抓取到的内容为乱码
    • 有的APP为了防止抓取,在返回的内容上做了层加密,所以从Charles上看到的内容是乱码。这种情况下也只能反编译APP,研究其加密解密算法进行解密。

07.Android拦截抓包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HdaA9gIw-1684069809257)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c5a3ca45be574551b38740e4adfb6422~tplv-k3u1fbpfcp-zoom-1.image)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VxYbemBW-1684069809258)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e40a220a27c84b63881a9311df83f60e~tplv-k3u1fbpfcp-zoom-1.image)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dzTPKpmz-1684069809259)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/d97aff6debdd479f9970d056b1787cc5~tplv-k3u1fbpfcp-zoom-1.image)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Oo2PtH6-1684069809259)(//p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/98048847fe9b446db66eda995cfa5f2e~tplv-k3u1fbpfcp-zoom-1.image)]

  • 网络拦截分析,主要是分析网络流量损耗,以及request,respond过程时间。打造网络分析工具……
  • 项目代码地址:github.com/yangchong21…
  • 如果你觉得这个拦截网络助手方便了测试,以及开发中查看网络数据,可以star一下……

网络拦截库:github.com/yangchong21…文章来源地址https://www.toymoban.com/news/detail-611063.html

到了这里,关于Android Charles抓包,怎样抓包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安卓手机/pad用Charles抓包https(mac版超详细教程)

    前置条件:charles抓取手机数据包的前提,手机和电脑需要在一个局域网内。 在charles中【proxy-proxy Settings】设置进行代理的端口 电脑端安装https证书:  此时会启动“钥匙串访问”APP,并找到刚开安装好的证书,证书名字:Charles Proxy CA,找不到的可以搜索框搜下。   更改证书

    2024年02月13日
    浏览(34)
  • 安卓手机暂时不想被charles或fiddler抓包如何设置,长期不抓包如何删除证书

    有些小伙伴,在安装了charles或fiddler证书后,进行抓包作业; 但是工作完成后,不想再被抓包了,或者抓包软件影响网速、泄露隐私、让手机无法上网等。 如何关闭抓包操作呢? 可以在手机-设置-代理,将手机之前的代理设置 从 手动改为 无;就把抓包操作关闭了; 如果想

    2024年02月13日
    浏览(56)
  • 使用charles(fildder ,Wire shark)对安卓模拟器(手机)进行抓包,获取http请求响应信息

    主要将Charles抓包的配置,和遇到问题进行了一个整理, 本教程,主要解决,按照Charles抓包配置之后,还是无法成功进行抓包。并且网络无法访问通的问题 https://www.52pojie.cn/thread-1600964-1-1.html charles的配置和安卓系统的配置,需要参照这个来。 win版 https://blog.csdn.net/qq_45564088

    2024年02月14日
    浏览(34)
  • android 7.0以上 https使用charles抓包 提示 unknow 解决方案

    关于android7.0以上https抓包问题,在charles都配置好的情况下依然提示unknow,解决方案如下 一、在res-xml下新建 network_security_config.xml 文件 network_security_config.xml 中的内容表示 系统的 和用户自己的证书均被信任 二、在AndroidManifest application 中添加 然后就可以了 注意该装的证书是少

    2024年02月16日
    浏览(34)
  • 苹果手机charles抓包

    描述:抓包项目未做 双向认证校验,ssl校验,单项校验;可尝试charles抓取 设备:charles4.6.4  苹果14 苹果xr 苹果13   1、打开char,打开顶部操作栏 HelpSSL Proxying选择第三个 2、手机打开wf,修改为手动代理,代理服务器192.168.200.58  端口8888,这个时候charles会弹出一个窗体,选择

    2024年02月16日
    浏览(26)
  • 【Charles】成功解决使用iOS手机抓包时,iOS手机连接网络失败&Charles配置方法

    解决方法:原来是因为我换了一台电脑,需要重新安装手机的证书,不能用之前的证书。而且安装完证书以后,Charles没有弹出让我allow的窗口,就直接可以抓包了。 配置方法如下,搬运自同事大佬: 手机和电脑连接同一个网络,启动charles工具 iOS手机代理配置,服务器及端口

    2024年02月11日
    浏览(43)
  • Charles iPhone 手机上抓包

    Charles iPhone 手机上抓包 1.点击help,选择local IP Address 查看电脑IP 2.点击 Proxy- Proxy settings查看端口号====8888 设置-WLAN-网络编辑,输入IP和端口并保存 做完以上五步,iPhone手机才可以用Charles抓包!

    2024年02月11日
    浏览(29)
  • Charles抓包web、手机、小程序配置

    一、下载地址 二、web抓包 Charles Web抓包,启动Charles会自动与浏览器设置成代理,不需要进行过多的设置。接下来就是通过浏览器发送网络请求,Charles就会直接抓取到这些信息和响应信息。  1、抓取HTTPS协议 Charles配置 点击顶部菜单栏【Help】–选择【SSL Proxying】,点击【i

    2024年02月12日
    浏览(40)
  • 华为手机使用Charles抓包不乱码教程,手机安装证书

    华为手机下载Charles证书是pem格式,不能直接安装,需要改证书为.crt 1、去官网下载Charles安装  Download a Free Trial of Charles • Charles Web Debugging Proxy Charles Web Debugging Proxy - Official Site https://www.charlesproxy.com/latest-release/download.do Charles其实是一款代理服务器,通过过将自己设置成系统

    2024年02月07日
    浏览(39)
  • IOS/安卓+charles实现抓包(主要解决证书网站无法打开问题)

    官网下载 https://www.charlesproxy.com/latest-release/download.do 安装charles文档 流程 上述链接解决下图问题    Charles介绍 上述链接看一至三即可,了解首页各个按钮的作用 charles全面使用教程及常见功能详解(较详细) 上述链接解释界面名词等等 手把手教你Charles抓包工具使用 上述链

    2024年01月20日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包