在 Firefox 扩展中阻止 webRequest 的 TLD 通配符?

TLD wildcard for webRequest blocking in Firefox extension?

我在我的 Web 扩展中实施了一些主机阻止,此时我匹配 ["http://*/*", "https://*/*"] 然后使用正则表达式函数过滤 URL,但我想缩小匹配模式而不是对每个请求都使用正则表达式匹配,这可能吗?

webRequest.RequestFilterMDN URL specifiers are Match PatternsMDN。匹配模式没有通配符顶级域的能力。他们不应该有这个能力。对 TLD 使用通配符本质上是不安全的。你不应该试图这样做。 无法 保证无论您尝试覆盖什么 company/site 都会获得每个 TLD 名称的每个版本。

如果您想要涵盖的公司有多个 TLD,您应该确定他们在每个 TLD 中拥有的域列表,并分别指定这些域。是的,使用提供有限 TLD 集的正则表达式来指定它可能会减少文本。

例如,如果允许使用正则表达式,那么 https://example.com, https://example.org/, and https://example.edu/ 可能类似于 /https?:\/\/(?:[^.\/]*\.)*example\.(?:com|edu|org)\//,但匹配模式没有正则表达式。他们拥有的有限通配符 * 代表任何东西,如果用它代替 TLD,将匹配任何 TLD,甚至是域和子域。所以最后,您需要分别列出每个域,包括 TLD。

正如您所确定的,您的另一种选择是使用 <all_urls> (或类似的),然后在您的处理程序中进行过滤。这样做是次优的。如果你这样做,你应该努力让听众快速。它不应该执行任何无关的操作,至少在它确定 URL 是它会还是不会进一步处理之前。