Chrome开发者工具:有没有办法排除URL匹配正则表达式的请求?

100

很不幸,在最新版本的Chrome中,负网络过滤器不再起作用了。我使用这个过滤器来排除每个包含特定字符串的http调用。我在Chrome开发工具论坛上提出了一个解决方案,但目前还没有人回答。

因此,我想知道是否有一种用正则表达式语法解决这个问题的方法(例如排除包含字符串“loadMess”的每个调用)。


这个回答解决了你的问题吗?有没有办法使用Google Chrome开发者工具过滤网络请求? - SuperStormer
7个回答

147

更新(2018年):

这是对我的旧答案的更新,以澄清这两个错误已经修复了一段时间

  1. 否定或排除过滤现在正常工作。 这意味着你可以使用 my.com/path筛选请求路径(显示匹配此内容的请求),或者使用-my.com/path筛选请求路径(显示不匹配此内容的请求)。

  2. 正则表达式解决方案在我的PR修复后也能工作。 这意味着您还可以使用/my.com.path//^((?!my.com/path).)*$/进行过滤,从而实现相同的结果。

我已将旧答案保留在此处供参考,它还解释了负查找解决方案。


预定义的负面过滤器确实有效,但目前在Chrome稳定版中无法对名称进行NOT过滤,只能使用CONTAINS。 这是一个错误,在Chrome Canary中已经修复。

一旦更改已推送到Chrome稳定版,您应该能够使用loadMess仅过滤该名称,并使用-loadMess过滤掉该名称并保留其余内容,就像以前一样。

Negative Filter

解决方法:用于匹配不包含字符串的正则表达式

^((?!YOUR_STRING).)*$

例子:

^((?!loadMess).)*$

说明:

  • ^ - 字符串开始位置

  • (?!loadMess) - 负向先行断言(在此位置,不匹配下一段,但不进行捕获)

  • . - 匹配任意字符(除换行外)

  • ()* - 0个或多个前面的组

  • $ - 字符串结束位置

更新(2016年):

我发现 DevTools 在网络面板中处理正则表达式时存在错误。这意味着上述解决方法虽然有效,但无法解决问题。

网络面板过滤器基于名称和路径(源代码中发现),但它执行了两个或操作的测试。在上面的情况下,如果在名称中有 loadMess,但在路径中没有(例如不在域或目录中),它将匹配其中一个。为了澄清,true || false === true,这意味着只有在名称和路径中都找到 loadMess 才会过滤掉它。

我已经在 Chromium 中创建了一个问题,并随后推出了一个修复程序供审核。这随后已经合并


2
@suikoy 我已经花了最近一个小时尝试了所有的方法,但是仍然不知道为什么它会失败。我在 JavaScript 中进行了测试,结果对我来说很好。可能是 DevTools 中使用的正则表达式解析器有问题。我将继续研究这个问题。同时,我建议你使用 Chrome Canary。 - Gideon Pyzer
3
@suikoy,我在源代码中找到了问题!我会尝试修复它。如果我成功设置并发出拉取请求,那将非常棒。我会保持你的更新! - Gideon Pyzer
2
@HussienK 这个问题已经在54.0.2832.2中得到修复。 - Gideon Pyzer
3
负向先行断言无法正常工作,使用“-stringToAvoid”似乎有效,我将使用它。 - Anomaly
2
负向先行断言不起作用。 但是“-my_regex”可以起作用。像这样:-/(Violation|HMR)/ - jeron-diovis
显示剩余8条评论

51

1
截至2019年7月,对于简单的字符串,这对我来说运行良好。 - imjared
1
我试图特别排除一些经常生成的域请求,比如socket.io请求。这是一个简单的解决方案,而且非常有效。 - undefined

29

推荐使用负向先行断言(negative lookahead)来匹配内容,但是该方法并不能很好地发挥作用。

相反,对于我来说,使用"-myregex"可以起到作用。例如:-/(Violation|HMR)/


1
这可能是目前唯一正确的答案。 - LianSheng

4

筛选多个不同的URL

您可以使用否定符号来筛选网络调用。
例如:-lab.com 将筛选 lab.com 的URL。

但是,如果要筛选多个URL,可以在正则表达式中使用 | 符号。
例如:-/lab.com|mini.com/ 这将筛选出 lab.com 和 mini.com,您还可以使用它来筛选许多不同的网站或URL。


3

Chrome浏览器开发工具支持正则表达式过滤并不是很好。
当我想要隐藏一些请求时,它不能像上面展示的那样工作。但您可以使用-hide1-hide2来隐藏您想要的请求。
只需在条件之间留一个空格,这样就不匹配正则表达式了,我猜这可能是原则上使用字符串匹配而非正则表达式。


3
您可以使用“反转”选项来排除与筛选文本框中的字符串匹配的API。

1
在最新的Chrome版本(62)中,您必须使用:

-mime-type:image/gif

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接