Fiddler 从特定进程捕获流量在 Chrome 中停止工作


  1. 打开Chrome并导航到 google.com
  2. 在Fiddler中使用"任何进程"按钮选择Chrome标签
  3. 在Fiddler中,"任何进程"按钮更改为"chrome:11788">
  4. 在 Chrome 标签页中搜索内容

我希望 Fiddler 捕获流量,但不显示会话。如果我使用"任何进程",则会从所有应用程序捕获流量。

">

过滤器"选项卡中的"使用过滤器"复选框处于未选中状态。

我卸载并重新安装了小提琴手。

我安装了最新版本。

我还能做什么?

现代版本的Google Chrome使用单独的进程来发出请求;因此,由"任何进程"工具检测到的主窗口的进程是不同的。

该团队正在考虑修复,但目前尚未实施,请参阅不再适用于 Chrome 的"定位任何进程"功能。

同时,可能的解决方法是:

  • 使用其他过滤功能 - 例如,捕获来自 Chrome 的请求,然后从"会话"视图中选择right click -> Filter now -> Show only process=<process number>

  • 过滤其他所有内容。在《提琴手》中,取消选中Tools -> Options -> Connections -> Act as system proxy on startup。然后使用手动指定的代理设置启动Chrome,指向Fiddler正在侦听的端口:

    chrome --proxy-server=http://localhost:8888
    

    这样,唯一捕获的流量将来自此Chrome实例。

详细版本:为什么Fiddler的进程选择器工具不再适用于Chrome

简要版本:出于安全和性能原因,Chrome 现在通过单独的网络服务处理网络请求。因此,当您将Fiddler的"任何进程"工具指向任何Chrome窗口/选项卡上时,您实际上指向Chrome浏览器的UI(浏览器进程(。

有一个快速的解决方法:

  1. 在 Chrome 浏览器中导航到chrome://flags/#network-service-in-process。您将看到Runs network service in-process,其值将设置为"默认"。
  2. 将值从">默认"更改为"已启用"。通过这样做,您告诉Chrome处理来自浏览器进程的网络请求,该进程也处理UI。
  3. 重新启动浏览器。现在,您应该能够通过将任何进程工具指向任何 Chrome 标签来捕获网络请求。

完成开发活动后,不要忘记将标志设置回默认。这将提供更好的性能。

注意:在撰写本文时,我使用的是Chrome 84。

最新更新