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

时间:2017-09-10 06:36:54

标签: javascript google-chrome-extension firefox-addon firefox-webextensions

我在我的网络扩展程序中实施了一些主机阻止,此时我正在匹配["http://*/*", "https://*/*"],然后使用正则表达式功能来过滤网址,但我想缩小范围匹配模式而不是在每个请求上使用正则表达式匹配,这可能吗?

1 个答案:

答案 0 :(得分:1)

webRequest.RequestFilter MDN 网址说明符为Match Patterns MDN 。匹配模式不具备通配符顶级域的功能。他们不应该拥有此功能。使用TLD的通配符是固有的不安全。你不应该这样做。 无法保证您尝试覆盖的任何公司/网站都将获得每个TLD的每个版本的名称。

如果您有一些您希望涵盖的公司有多个TLD,您应该确定他们在每个TLD中拥有的域名列表并单独指定。是的,使用提供有限TLD集的正则表达式来指定它可能更少。

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

正如您所确定的,您可以使用其他替代方法<all_urls>(或类似),然后在处理程序中进行过滤。这样做是次优的。如果你这样做,你应该努力使听众快速。它不应该执行任何无关的操作,至少直到确定URL是否为一个URL,或者不会进一步处理。