所以我的目标是只屏蔽某些 YouTube 频道。
如果我做:
acl block_youtube dstdomain .youtube.com
http_access deny block_youtube
它会阻止任何对 youtube 的访问。
如果我做:
acl block_youtube url_regex -i ^https://www.youtube.com/watch\?v=v2AC41dglnM
http_access deny block_youtube
尽管我在我的access_log中看到了这个特定的页面,但它并没有阻止这个特定的页面。
475862685.876 0 100.100.100.100 TAG_NONE/200 0 CONNECT www.youtube.com:443 - HIER_NONE/- -
1475862686.359 412 100.100.100.100 TCP_MISS/200 51182 GET https://www.youtube.com/watch\?v=v2AC41dglnM - HIER_DIRECT/216.58.192.238 application/json
有人知道如何解决这个问题吗?
答案1
由于您尝试阻止的 YouTube 是 HTTPS,因此您遇到了问题。代理不会解封装 HTTPS 来了解 URL 和内容,因此它能够断开连接。要解决您的问题,您必须查看 Squid 的 SSL Bump 解决方案。由于许可证问题,它默认不启用,但您可以轻松地重新编译包。此解决方案的问题是客户端必须知道代理中使用的认证机构,并且此机构是本地的并允许为所有 https 站点创建证书。因此您需要在所有 PC 上部署该机构。
答案2
你知道该如何屏蔽 YouTube 频道了吗?我正在研究类似的东西。关于你的正则表达式,你可以使用类似这样的网站https://regex101.com/根据字符串值测试你的正则表达式。