Попробую рассказать как удалось впихнуть невпихуемое.
Пусть есть секция какой-то блокировки и в url написано что-то вроде, -
url
http://block.ru/block.html
Открываем в браузере блокируемый https урл, режик его меняет, но подмена делается некорректно. Видим:
невозможно открыть
https://http/*
(именно так выглядит подмена, выполняемая на первом этапе создания https-подключения)
Причина такой некорректрой замены в том, что первое соедение идет без протокола http/https,
как CONNECT vk.com:443, режик при парсинге запроса в качестве протокола ставит none, результат замены я уже показал. Чтобы обойти фазу с отсутствующим протоколом нужно создать первую секцию замены
(прописать свою сеть)
<SSL>
work_ip 10.0.0.0/8
ban_dir /usr/local/rejik3/banlists/ssl
action pass
в pcre прописать строку
^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])\:443$
после чего замена урла начинает производиться когда в нем появляется протокол с которым режик делает замену правильно.
Теперь появляется новая ошибка, squid сообщает, что в данный момент запрос
http://block.ru/block.html не может быть выполнен (302 не помогает).
Обмануть squid удалось следующим образом. Нужно направить squid на промежуточный сайт с редиректом, я его сделал на localhost
url
http://127.0.0.1/block.html
сайт пустой, в .htaccess прописано (использовался apache2)
Redirect permanent /block.html
http://block.ru/block.html
Однако и в этом случае squid скажет, что в данный момент не может выполнить запрос, только на этот раз
http://127.0.0.1/block.html
Оказалось, что если результат такого запроса будет в кэше сквида, то он его откроет, для это достаточно выполнить
export http_proxy=
http://127.0.0.1:3128
wget -q 127.0.0.1/block.html
и страница подмены начинает отображаться для http/https.
После перезагрузки squid кэш очищается и необходимо снова вылнить указанный запрос.
Я вставил в крон выполнение запроса раз 5 минут (он ведь может и "уйти" из кэша)
Не уверен, что это единственно правильное решение, но оно работает.