При попытке открыть Кинозал.тв в любом браузере перебрасывает на заглушку РосКомНадзора.
Москва, провайдер ОнЛайм, OS X 10.11.2 El Capitan. DNS гугловские. Запрос браузера идёт по правильному адресу, к CloudFlare – на этот же ip ресолвится имя сайта и с зарубежных vps'ов. В ответ в браузеры приходит просто редирект на заглушку:
Если же проделать соединение не браузером, а telnet на порт 80, то всё работает как положено – возвращается html страницы безо всяких редиректов:
Это так же работает, если в telnet отправить все те же HTTP заголовки, что и шлёт браузер:
GET / HTTP/1.1
Host: kinozal.tv
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: uid=1234567; pass=XXXXXXXX; __cfduid=abcdefe0171f2defb37070b1428009916; stylet=0
Connection: keep-alive
Хотя заголовок про gzip лучше убрать, а то в терминал валится нечитаемый бинарный мусор компрессированного контента.
Пока единственная разница, которую вижу –
во времени: в telnet от момента соединения до отправки заголовков проходит пара секунд, пока я вручную сделаю paste. В браузере это происходит за миллисекунды. Надо попробовать с curl..
Вопрос: почему запросы из telnet обходят механизм блокировки? (как заставить браузеры имитировать telnet в плане обхода блокировок тоже интересно, но, возможно, будет очевидным)
Upd. более тонко отловленная разница. Netcat
с 1-секундной задержкой (
-i 1
) в ответ возвращает добавленный заголовок редиректа:
$ echo -ne 'GET / HTTP/1.1\r\nHost: kinozal.tv\r\n\r\n' | nc -i 1 kinozal.tv 80
Без секундной задержки, с вручную вставленным запросом (как в варианте с telnet) возвращает чистый html искомой страницы:
Похоже, дело во времени?