我很确定这确实是一个正则表达式问题,因此如果您想跳过背景,可以跳到正则表达式问题。
我们的主要防火墙是运行 Fireware XTM v11.2 的 Watchguard X750e。我们使用 webblocker 来阻止大多数类别,并且我会在需要时允许它们。有些网站很容易添加为例外,例如 Pandora 电台。这只是一个模式匹配的例外,带有“padnora.com/“作为模式。来自 pandora.com 上任何地方的所有流量都是允许的。
我在更复杂的域名上遇到了麻烦,这些域名引用了其基础域名之外的内容。我们将以 GrooveShark 为例。如果你去http://grooveshark.com/并查看页面源代码,你会看到 hrefs 指向 gs-cdn.net 以及 grooveshar.com。因此,添加 WebBlocker 例外到grooveshark.com/是无效的,我必须添加第二条规则,允许gs-cdn.net/也一样。
我看到 WebBlocker 允许正则表达式规则,因此在这种情况下我想要做的是创建一个允许流量到所有需要的域的单一正则表达式规则。
正则表达式问题:我想尝试一个匹配的正则表达式grooveshark.com/和gs-cdn.net/。如果有人能帮助我编写该正则表达式,我将不胜感激。
以下是 WatchGuard 文档中该部分的内容:正则表达式
正则表达式匹配使用与 Perl 兼容的正则表达式进行匹配。例如,.[onc][eor][gtm] 匹配 .org、.net、.com 或任何其他三个字母的组合,每个字母依次来自每个括号。请务必删除前导“http://”支持在 shell 脚本中使用的通配符。例如,表达式“(www)?.watchguard.[com|org|net]”将匹配包括 www.watchguard.com、www.watchguard.net 和 www.watchguard.org 在内的 URL 路径。
谢谢大家!
答案1
我在我的 Watchguard 上做了同样的事情。
这是我使用的正则表达式,经过编辑以适合您正在使用的域。
(?i)^([^./]+\.)*(grooveshark\.com|gs-cdn\.net)(?![^/])
我不确定您是否有意在问题中省略了 grooveshark 中的 k,或者这只是一个拼写错误。如果他们有时使用 grooveshar.com,那么您需要这个:
(?i)^([^./]+\.)*(grooveshark?\.com|gs-cdn\.net)(?![^/])
k 后面的 ? 使得它不再是必需的。
我强烈推荐正则表达式教练帮助您构建正则表达式。
我也强烈推荐http://www.regular-expressions.info/作为参考。
答案2
不要。向您的 Web 过滤器添加多个“允许”规则并没有什么错,您的继任者会感谢您提供的易读性。几个域允许规则就足够了。