regex - Chrome开发工具: any way to exclude requests whose URL matches a regex?

标签 regex google-chrome networking google-chrome-devtools

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

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

最佳答案

更新(2018):

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

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

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

我把旧的答案留在这里供引用,它也解释了否定查找的解决方案。

<小时/>

预定义的否定过滤器确实有效,但目前不允许您对 Chrome 稳定版中的名称执行 NOT 过滤器,只能对 CONTAINS 进行过滤。这是bug该问题已在 Chrome Canary 中修复。

将更改推送到 Chrome 稳定版后,您应该能够执行 loadMess 来仅过滤该名称,并执行 -loadMess 来过滤掉该名称并其余部分保持原样。

Negative Filter

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

^((?!YOUR_STRING).)*$

示例:

^((?!loadMess).)*$

说明:

  • ^ - 字符串开头

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

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

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

  • $ - 字符串结尾

更新(2016):

我发现 DevTools 在 Network 面板中处理 Regex 的方式实际上存在一个错误。这意味着上面的解决方法不起作用,尽管它是有效的。

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

我在 Chromium 中创建了一个问题,随后推送了 fix需要评审。这随后被merged .

关于regex - Chrome开发工具: any way to exclude requests whose URL matches a regex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38524801/

相关文章:

python - 在python中使用正则表达式提取冒号或括号之前的字符串

javascript - Chrome注入(inject)脚本不一致问题

javascript - 在客户端模拟 HTTP 请求

python - 在 python 中处理和保存 UDP 流的最快方法

python - 正则表达式在文本的不同部分中匹配不同符号相同次数

php - 考虑下一个字符的正则表达式

java - 在 Java 中,如何使用正则表达式检查字符串是否包含两个字母和可变数量的数字?

html - 在perl中刷新没有 "Confirm Form Resubmission"的浏览器

java - Android- EXTRA_HEADERS 未反射(reflect)在更新的 Chrome 版本大于 83 中

java - 如何用 Java 创建简单的 UDP 客户端-服务器通信?