Меня попросили заблокировать доступ к Facebook с 8:00 до 15:00 почти для всех пользователей, но они все равно используют альтернативные URL Facebook для доступа к социальной сети. Это потребляет большую часть нашей низкой пропускной способности, и мы даже не можем работать. Я решил создать регулярное выражение (регулярное выражение), чтобы проанализировать эти URL-адреса и заблокировать их. Я не хочу блокировать все URL-адреса facebook, но только альтернативы. Альтернативные адреса 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. Мое регулярное выражение выглядит хорошо для использования в Squid.

Следующим шагом является изменение файла /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 parse для проверки файла конфигурации, я получаю ошибки:

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. Я очень смущен этим.

1 ответ1

0

Проблема в регулярном выражении. Изменено регулярное выражение с этим: \b(iphone|prod)\b.*\.facebook\.com и теперь squid останавливает URL. После запуска squid3 -k parse squid сообщает, что проблем нет, и если пользователь пытается получить доступ к альтернативной ссылке Facebook, такой как (например): test.prod.facebook.com, прокси-сервер отклоняет соединение.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .