Chrome开发者工具:有什么方法可以排除网址与正则表达式匹配的请求?


75

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

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

Answers:


116

更新(2018):

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

  1. 取消或排除过滤功能现在可以按预期工作。这意味着您可以使用my.com/path(显示匹配此请求的显示请求)或-my.com/path(显示不匹配此请求的显示请求)过滤请求路径。

  2. 我的PR修复程序投入生产后,正则表达式解决方案也可以使用。这意味着您也可以使用/my.com.path/和进行过滤/^((?!my.com/path).)*$/,以达到相同的结果。

我在这里留下了旧答案以供参考,它还解释了否定查找解决方案。


预定义的否定过滤器可以工作,但是目前不允许您NOT仅对Chrome稳定器中的名称进行过滤CONTAINS。这是Chrome Canary中已修复的错误

将更改推送到Chrome稳定后,您应该能够loadMess只过滤该名称,然后-loadMess过滤出该名称,然后保留其余名称,就像以前一样。

负滤波器

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

^((?!YOUR_STRING).)*$

例:

^((?!loadMess).)*$

说明:

  • ^ -字符串开始

  • (?!loadMess) -负前瞻(在此光标处,不匹配下一位,不捕获)

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

  • ()* -先前组中的0个或更多

  • $ -字符串结尾

更新(2016):

我发现在Network面板中DevTools如何处理Regex实际上存在一个错误。这意味着上述解决方法即使有效,也无法使用。

“网络”面板过滤“名称”​​和“路径”(从源代码中发现),但是它会执行两个经过“或”运算的测试。在上述情况下,如果您loadMess在“名称”中,但在“路径”中(例如,没有域或目录),则两者都将匹配。要澄清的是true || false === true,这意味着只有loadMess在“名称”和“路径”中都找到它时,它才会过滤掉。

我在Chromium中创建了一个问题,并随后推送了一个修复程序进行审查。此后已合并


1
确实完整的解释,但它不起作用...此处的示例:s31.postimg.org/53odofq23/Schermata_del_2016_07_22_15_17_59.png。我拥有Chrome版本52.0.2743.82(64位)
suikoy

2
@suikoy我花了最后一个小时尝试了所有事情,但看不到为什么失败了。我用JavaScript测试过,对我来说很好用。DevTools中使用的Regex解析器可能有些不可靠。我将继续研究这个问题。同时,我想只能使用Chrome Canary。
基迪恩·皮泽

3
@suikoy我在源代码中发现了这个问题!我将研究修复它。如果我设法进行设置并提出拉动请求,那就太酷了。我会及时向大家发布!
基迪恩·皮泽

2
@HussienK已在54.0.2832.2修复
基迪恩·皮泽

3
编辑:负前瞻不起作用,-stringToAvoid似乎起作用,并且我将使用它
异常


7

建议在任何地方使用负前瞻功能,但它不起作用。

相反,“-myregex”对我有用。像这样:-/(Violation|HMR)/


3

Chrome broswer dev tools支持regrex过滤不是很好。
当我想隐藏一些请求时,它无法如上所示工作。但是您可以-hide1 -hide2用来隐藏所需的请求。
仅在条件之间留一个空格,这与regrex不匹配,我猜原则上它可能使用除regrex以外的字符串匹配


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.