我在 Squid 中使用正则表达式阻止 URL 时遇到问题。
acl porn url_regex "/etc/squid3/porn.txt"
http_access deny porn
porn.txt 看起来像这样
.sex.com
.redtube.com
问题是这是 REGEX 规则,此时这意味着 Squid 将阻止所有包含相同字母的 URL
www.SamE-Xantipa.COM -> contain .sex.com
www.REaDy-for-shop-TUBEs.COM -> contain .redtube.com
我不知道 REGEX 语法,也不知道如何重写文本文件以仅搜索整个文本
你的问题是点!
一个点“.”在正则表达式中实际上可以是“任何东西”。
您需要输入倒立的破折号。
所以,而不是:
.sex.com
.redtube.com
你必须输入:
\.sex\.com
\.redtube\.com
我也建议你屏蔽这种方式,以覆盖所有的可能性:
^http://.*\.*sex\.com/*.*
^http://.*\.*redtube\.com/*.*
让我解释一下你要告诉鱿鱼如何处理这个正则表达式:
^ = 这是网址的开头
http:// = 是始终需要的协议
。 = 例如,任何内容都可以是子域或 www
* = 表达式 BEFORE(子域或 www)可能发生也可能不发生
\ = 下一个字符不是“任何东西”,而是一个真正的点
。 =真正的点...
* = ...这可能发生也可能不发生
性别=领域
。 =下一个字符又是一个真正的点
com = 顶级域名
/* = 可能发生或不发生的破折号(此处涵盖所有可能的网站配置)
.* = 最后一个破折号之后任何事情都可能发生或不发生(/index.php,等等)
我希望这可以帮助您了解一些关于正则表达式以及如何有效阻止网站!
您可以按域阻止:
acl porn dstdomain -i "/etc/squid3/porn.txt"
http_access deny porn
或通过正则表达式阻止:
acl porn url_regex -i "/etc/squid3/porn.txt"
http_access deny porn
/etc/squid3/porn.txt 文件内容可能是:
domains\.com
www\.porn\.net
porn\.com
如何使用正则表达式阻止所有 url(http 和 https)?