很不幸,在最新版本的Chrome中,负网络过滤器不再起作用了。我使用这个过滤器来排除每个包含特定字符串的http调用。我在Chrome开发工具论坛上提出了一个解决方案,但目前还没有人回答。
因此,我想知道是否有一种用正则表达式语法解决这个问题的方法(例如排除包含字符串“loadMess”的每个调用)。
很不幸,在最新版本的Chrome中,负网络过滤器不再起作用了。我使用这个过滤器来排除每个包含特定字符串的http调用。我在Chrome开发工具论坛上提出了一个解决方案,但目前还没有人回答。
因此,我想知道是否有一种用正则表达式语法解决这个问题的方法(例如排除包含字符串“loadMess”的每个调用)。
更新(2018年):
这是对我的旧答案的更新,以澄清这两个错误已经修复了一段时间。
否定或排除过滤现在正常工作。 这意味着你可以使用 my.com/path
筛选请求路径(显示匹配此内容的请求),或者使用-my.com/path
筛选请求路径(显示不匹配此内容的请求)。
正则表达式解决方案在我的PR修复后也能工作。 这意味着您还可以使用/my.com.path/
和/^((?!my.com/path).)*$/
进行过滤,从而实现相同的结果。
我已将旧答案保留在此处供参考,它还解释了负查找解决方案。
预定义的负面过滤器确实有效,但目前在Chrome稳定版中无法对名称进行NOT
过滤,只能使用CONTAINS
。 这是一个错误,在Chrome Canary中已经修复。
一旦更改已推送到Chrome稳定版,您应该能够使用loadMess
仅过滤该名称,并使用-loadMess
过滤掉该名称并保留其余内容,就像以前一样。
^((?!YOUR_STRING).)*$
^((?!loadMess).)*$
^
- 字符串开始位置
(?!loadMess)
- 负向先行断言(在此位置,不匹配下一段,但不进行捕获)
.
- 匹配任意字符(除换行外)
()*
- 0个或多个前面的组
$
- 字符串结束位置我发现 DevTools 在网络面板中处理正则表达式时存在错误。这意味着上述解决方法虽然有效,但无法解决问题。
网络面板过滤器基于名称和路径(源代码中发现),但它执行了两个或操作的测试。在上面的情况下,如果在名称中有 loadMess
,但在路径中没有(例如不在域或目录中),它将匹配其中一个。为了澄清,true || false === true
,这意味着只有在名称和路径中都找到 loadMess
才会过滤掉它。
-gif
推荐使用负向先行断言(negative lookahead)来匹配内容,但是该方法并不能很好地发挥作用。
相反,对于我来说,使用"-myregex"可以起到作用。例如:-/(Violation|HMR)/
。
筛选多个不同的URL
您可以使用否定符号来筛选网络调用。
例如:-lab.com
将筛选 lab.com 的URL。
但是,如果要筛选多个URL,可以在正则表达式中使用 | 符号。
例如:-/lab.com|mini.com/
这将筛选出 lab.com 和 mini.com,您还可以使用它来筛选许多不同的网站或URL。
Chrome浏览器开发工具
支持正则表达式过滤并不是很好。
当我想要隐藏一些请求时,它不能像上面展示的那样工作。但您可以使用-hide1
-hide2
来隐藏您想要的请求。
只需在条件之间留一个空格,这样就不匹配正则表达式了,我猜这可能是原则上使用字符串匹配而非正则表达式。
-mime-type:image/gif