Мене попросили заблокувати доступ до Facebook з 8:00 до 15:00 майже для всіх користувачів, але вони все одно використовують альтернативні URL-адреси Facebook для доступу до соціальної мережі. Це споживає багато нашої низької пропускної здатності, і ми навіть не можемо працювати. Я вирішив створити регулярний вираз (регулярний вираз), щоб проаналізувати ці URL-адреси та заблокувати їх . Я не хочу блокувати всі URL-адреси у Facebook, а лише альтернативи. Альтернативна URL-адреса Facebook здебільшого містить слова prod чи iphone . Наступні - це альтернативні URL-адреси Facebook, зареєстровані нашим проксі-сервером:
m.iphone.touch.prod.facebook.com
m.iphone.haid.prod.facebook.com:443
m.ct.prod.facebook.com
m.vi-vn.prod.facebook.com
Розроблений регулярний вираз: /((?=.*\biphone\b)|(?=.*\bprod\b)).*\.facebook\.com(\:|\d|)/
Я протестував цей регекс на https://regex101.com/ та https://www.regextester.com . Режекс відповідає :
m.iphone.touch.prod.facebook.com
m.iphone.haid.prod.facebook.com:443
m.ct.prod.facebook.com
m.vi-vn.prod.facebook.com
І не відповідає :
www.facebook.com
m.facebook.com
mqtt.facebook.com (for purple-facebook)
graph.facebook.com
connect.facebook.com
3-edge-chat.facebook.com
Наразі це те, чого я хотів, альтернативні URL-адреси заблоковані та дозволені регулярні URL-адреси Facebook. Мій регекс виглядає добре, щоб його використовувати в кальмарах .
Наступний крок - змінити файл /etc/squid3/squid.conf, додавши новий acl, який вказує на файл, що містить регулярний вираз:
acl facebook dstdom_regex "/etc/squid3/acl/facebook" //The file contains the regex
http_access deny pass facebook
Коли я запускаю squid3 -k розбір для перевірки файлу конфігурації, я отримую помилки:
2017/09/22 11:12:26| Processing: acl facebook dstdom_regex "/etc/squid3/acl/facebook"
2017/09/22 11:12:26| squid.conf line 78: acl facebook dstdom_regex "/etc/squid3/acl/facebook"
2017/09/22 11:12:26| aclParseRegexList: Invalid regular expression '((?=.*\biphone\b)|(?=.*\bprod\b)).*\.facebook\.com(\:|\d|)': Invalid preceding regular expression
2017/09/22 12:39:33| Warning: empty ACL: acl facebook dstdom_regex "/etc/squid3/acl/facebook"
Очевидно, що аналізатор squid3 мітить мій acl як неправильний , але я вже тестував в Інтернеті, і це було добре використовувати. Крім того, він говорить, що acl порожній. Що це означає? Acl був оголошений з назвою facebook . Я дуже збентежений у цьому.