如何用 fiddler 捕获 https 请求

如何用 fiddler 捕获 https 请求

安装完 Fiddler 后,我们每次打开浏览器输入 url,Fiddler 便会捕获到我们的 http 请求(Fiddler 是以代理 web 服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888. 当浏览器打开时 Fiddler 会自动设置代理,退出的时候它会自动注销代理,这样就不会影响别的程序)。但是,如果要捕获 https 的请求,我们还需要进行一些额外的设置。

要抓取走 HTTPS 的 JS 内容,Fiddler 必须解密 HTTPS 流量。但是,浏览器将会检查数字证书,并发现会话遭到窃听。为了骗过浏览器,Fiddler 通过使用另一个数字证书重新加密 HTTPS 流量。Fiddler 被配置为解密 HTTPS 流量后,会自动生成一个名为 DO_NOT_TRUST_FiddlerRoot 的 CA 证书,并使用该 CA 颁发每个域名的 TLS 证书。若 DO_NOT_TRUST_FiddlerRoot 证书被列入浏览器或其他软件的信任 CA 名单内,则浏览器或其他软件就会认为 HTTPS 会话是可信任的、而不会再弹出“证书错误”警告。

首先,打开 Fiddler,在菜单栏中依次选择 【Tools】->【Fiddler Options】->【HTTPS】,勾上如下图的选项。

675542-20151124210753687-177921438.png

勾上后,Fiddler 会提示你安装一个证书。安装完后点击上图中的 “Export Root..” 按钮,将证书下载到桌面。

接着将证书导入到浏览器。这里以 chrome 举例,依次选择 【设置】->【管理证书..】 将保存在桌面的证书导入即可(其他浏览器类似,通常有个“证书”选项设置)。

675542-20151124210802531-539798183.png

也可以直接双击下载下来的证书,进行安装。

675542-20151124210810484-1206875482.png

我们打开 www.baidu.com,这时就可以愉快地捕获 https 请求了!

675542-20151124210825812-1427894859.png

细心的你可能会发现,在 https 的请求中夹杂着一些 http 的请求,并且该 session 的 Host 参数是个诡异的 “Tunnel to”,什么鬼? StackOverflow 里早已有精彩解答,或者可以直接看这里,简单地说 fiddler 当做代理转发 https 请求的时候,就会产生 “CONNECT Tunnels”,所以大可忽略它。

ps:据说如果要捕获移动端的 https 请求,在手机上也要安装证书,详见 Fiddler学习:捕获HTTPS会话配置。可是我好像没设置也可以捕获,不知何故,待查。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109237.html原文链接:https://javaforall.net

(0)
上一篇 2021年9月11日 上午6:00
下一篇 2021年9月11日 上午7:00


相关推荐

  • Python之完美解决pycharm安装python模块失败,pip安装后不成功,pycharm还是报错

    Python之完美解决pycharm安装python模块失败,pip安装后不成功,pycharm还是报错python 安装目录解释器就用该目录下的库 项目的解释器就用项目里面的库 回到之前的问题 pip 成功 pycharm 识别不了 这就是因为新建项目默认解释器是用 项目的解释器 的 但是 pip 安装的第三方库是在 python 安装目录下 所以会识别不了

    2026年3月27日
    2
  • 操作系统中常用的进程调度算法有_调度算法有哪些

    操作系统中常用的进程调度算法有_调度算法有哪些1、先来先服务调度算法先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直

    2026年4月18日
    4
  • 深入理解 Agent 与 LLM 的区别:从智能体到语言模型

    深入理解 Agent 与 LLM 的区别:从智能体到语言模型

    2026年3月15日
    2
  • java文件传输接口

    java文件传输接口跨系统的文件传输 上传 接口在系统开发中经常遇见在不同的系统 如安卓和 web 端 的文件上传 有两种方法 第一种 如果图片比较小可以采用 post 方式将图片转成 base64 的码放在 data 域中 以字符串传参的方式发送到指定的接口取出其值 多个就采用数组 这种一般试用与仅仅图片上传 且图片比较小大约 10kbz 左右太大了 base64 位比较都 http 传输数据太大 导致不能进入指定接口 第二种 采用

    2026年3月19日
    3
  • mysql启动命令 linux命令,linux下mysql 启动命令

    mysql启动命令 linux命令,linux下mysql 启动命令1,使用service启动、关闭MySQL服务servicemysqlstartservicemysqlstopservicemysqlrestart运行上面命令,其实是service命令去找/etc/init.d下的相关的mysql脚本去执行启动、关闭动作。2,使用/etc/init.d/mysql启动、关闭MySQL服务,[root@DB-Serverbin]#/etc/in…

    2022年5月21日
    61
  • Oracle数据库学习心得(一)

    Oracle数据库学习心得(一)1 基本查询语句 select 字段 from 表名 2 算数运算符 3 虚表 dual 专门用于做查询某些表达式的实验 4 空值 或 null 空值和任何值做数学运算结果一定为空 空值和任何值做比较运算结果一定为假 oracle 数据库没有 true 和 false 5 Oracle 不区分大小写 但是标志符区 表名 列名 别名等 分大小写 标志符不加 默认自动转换为大写执行 6 O

    2026年3月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号