不幸的是,在 Chrome 的最新版本中,否定网络过滤器不再起作用。我使用此过滤器来排除每个包含特定字符串的 http 调用。我在 Chrome 开发工具论坛中询问了解决方案,但目前没有人回答。
所以我想知道是否有办法用正则表达式语法解决这个问题(例如排除每个包含字符串“loadMess”的调用)。
最佳答案
更新(2018):
这是对我旧答案的更新,以澄清这两个错误已经修复了一段时间。
否定或排除过滤现在正在按预期工作。这意味着您可以使用
my.com/path
(显示与此匹配的请求)或-my.com/path
(显示与此不匹配的请求)来过滤请求路径。正则表达式解决方案在我的 PR 修复投入生产后也可以工作。这意味着您还可以使用
/my.com.path/
和/^((?!my.com/path).)*$/
进行过滤,这将实现相同的结果。
我把旧的答案留在这里供引用,它也解释了否定查找的解决方案。
<小时/>预定义的否定过滤器确实有效,但目前不允许您对 Chrome 稳定版中的名称执行 NOT
过滤器,只能对 CONTAINS
进行过滤。这是bug该问题已在 Chrome Canary 中修复。
将更改推送到 Chrome 稳定版后,您应该能够执行 loadMess
来仅过滤该名称,并执行 -loadMess
来过滤掉该名称并其余部分保持原样。
解决方法:用于匹配不包含字符串的字符串的正则表达式
^((?!YOUR_STRING).)*$
示例:
^((?!loadMess).)*$
说明:
^
- 字符串开头(?!loadMess)
- 负向前视(在此光标处,不匹配下一位,不捕获).
- 匹配任何字符(换行符除外)()*
- 0 个或多个前面的组$
- 字符串结尾
更新(2016):
我发现 DevTools 在 Network 面板中处理 Regex 的方式实际上存在一个错误。这意味着上面的解决方法不起作用,尽管它是有效的。
网络面板过滤名称和路径(如从源代码中发现的),但它执行两个“或”测试。在上面的情况下,如果名称中有 loadMess
,但路径中没有(例如不是域或目录),则它将在其中任何一个上匹配。澄清一下,true || false === true
,这意味着只有在 Name 和 Path 中都找到了 loadMess
时才会过滤掉它。
关于regex - Chrome开发工具: any way to exclude requests whose URL matches a regex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524801/