Пользователь
0,0
рейтинг
30 января 2015 в 15:06

Разработка → Блокируем блокировку от Роскомнадзора

Когда в очередной раз переадресовываешься на страницу от провайдера с предупреждением о том, что доступ к запрашиваемому сайту заблокирован, и приходится вручную вытаскивать URL сайта, задумываешься об автоматизации этой рутинной деятельности.

image

В моём частном случае речь пойдёт о блокировке от «Билайна». Чтобы избавится от её назойливости, нам понадобится веб-сервер. Подойдёт установленный на локальной машине.

«Билайн» перекидывает нас на страницу blackhole.beeline.ru/?url=...., где в переменной url в закодированном urlencode виде содержится наш адрес. Копировать и декодировать его каждый раз руками достаточно скучное дело, поэтому мы попробуем использовать нашу эволюционную особенность — мозг.

Для начала надо найти файл hosts.
В Windows он распологается в %SystemRoot%\system32\drivers\etc\hosts, в unix-like ОС в /etc/hosts.
В этом файле прописываются соответствия между доменами и IP адресами.

Добавляем туда строку: 127.0.0.1 blackhole.beeline.ru

В качестве IP надо указать IP любого сервера, который сможет заменить нам страничку, выдаваемую провайдером.

В index.php на этом сервере добавим такой код:

<?php
if ($_GET['url']!=''){
$webProxy="http://www.webproxy.net/view?q=";
print '<html><head><title>Ола-ла! Блокировочка)</title><meta http-equiv="content-type" content="text/html; charset=utf-8" /></head><body>';
print 'Ола-ла! Блокировочка)<br>';
print $_GET['url'] . '<br>';
print '<a href="'. $webProxy . urldecode($_GET['url']) . '">открыть в web proxy</a>';
print "</body></html>";
exit;
}
?>

Этот код срабатывает, если передаётся параметр url методом get, и не мешает работе существующего сайта.
В переменной $webProxy указан адрес рабочего веб прокси.

Итог: при переадресации провайдером на страницу предупреждения мы переадресовываемся на свою страничку, которая выводит нам URL сайта и предлагает открыть его через веб прокси. Мелочь, но сильно упрощает процесс сёрфинга.

UPD:
Кстати, может быть кто-нибудь поставит этот скрипт к себе на нелокальный сервер, и даст IP широкой общественности?
JuiQbmn @JuiQbmn
карма
15,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (53)

  • +7
    У моего провайдера блокировка вообще смешно обходится — надо свой ДНС вписать. Какой провайдер — не скажу, но дело происходит в Белокаменной.
    • +2
      Давно сидел и не понимал, чего все так ругаются на блокировки, меня-то не затрагивало. Потом выяснилось, что у людей, сидящих на моем же провайдере тоже все блокируется. После оказалось, что выручал гугловский DNS, который я воткнул после падения провайдерского на полдня. Провайдер распространен относительно широко, но Москву не обслуживает.
      • +1
        У разных провайдеров разные типы блокировки, вот полезная статья: Определитель типа блокировки сайтов у провайдера habrahabr.ru/post/228305/
        Кстати, некоторые очень плохие провайдеры еще и подменой сертификатов увлекаются, так что будьте бдительны, вот прохладная история с ценными советами (осторожно, гугл+)
        • 0
          В Екатеринбурге как минимум один провайдер подменяет сертификаты и не скрывает этого. К сожалению, на данный момент я пользуюсь именно этим провайдером.
          • 0
            если речь про дом.ру, то у них не подмена сертификата а спуфинг дна ответов. ругань на сертификат браузером — побочное явление.
      • 0
        Аналогичная ситуация у меня в Питере. Блокировка по DNS. Сижу на Гугле.
  • +1
    А у моего обходится попыткой зайти на сайт по https, если сайт по нему работает то он не блокируется)) Захожу так на лост)
    • 0
      lostfilm.tv только меня редиректит на http?
      • +7
        ага, перебрасывает, это проблема лоста.
        юзай
        https://www.lostfilm.tv
        
      • +2
        Нет, вы не один.
  • +1
    А у нас редирект происходит на IP, hosts не спасёт, подмена DNS — тоже. Приходится включать zenmate или заходить через анонимайзер.
    • 0
      (сообщение удалено)
  • +3
    А я все по старинке. Через Tor.
  • 0
    Вот бы еще этот скриптик получал запрещенную страницу и возвразал бы целиком браузеру.
    • +2
      это можно сделать, но потом появится следущее требование, а как сделать так, чтобы он мог авторизовывать, передовать мои куки, автоматически переделывать ссылки, и тд, и всё выльется в полноценный веб прокси, коих итак предостаточно)
  • 0
    Как в данном способе с кукисами и тд.?
    В ютуб и вконтакт нормально залогинивается через вебпрокси?

    • 0
      это не вебпрокси, это оболочка перед вебпрокси, там можно написать урл любого вебпрокси доступного. я к сожалению их не особо тестировал. потмоучто мне важен текстовый контент
  • 0
    А через сжатие трафика средствами Google на Chrome или Janus proxy на FireFox не проще будет?
    Пока пользуюсь такими способами без проблем, есть кнопочка включения — выключения, если проблемы то включаю, остальной трафик как обычно. Можно конечно настроить автосмену прокси для определенных адресов, но учитывая частое изменение списка блокировок не стал этого делать.
    Надеюсь прокси сами по себе не попадут под блокировку.
  • +2
    Не проще ли воспользоваться плагином для браузера с этого же сайта?
    image
    • +1
      не проще
      1) вебпрокси при использовании для всех сайтов, а не только для заблокированных, замедляет работу
      2) что-бы использовать его выборочно, надо «удобно» узнать какие страницы заблокированны, а стандартное предупреждение провайдера проглатывает URL
  • +9
    Кстати, может быть кто-нибудь поставит этот скрипт к себе на нелокальный сервер, и даст IP широкой общественности?

    antizapret.prostovpn.org/
    bitbucket.org/ValdikSS/antizapret
    • 0
      Спасибо, хорошая вещь. А могу ли я настроить это человеку, не слишком шарящему в этой теме, с уверенностью, что это не упадет через месяц? У вас это выглядит не как поделка на локалхосте.
      • +1
        Я запустил эту штуку 22 марта 2013. Иногда падает, но относительно редко и ненадолго. Если провайдер использует Full DPI, то настраивать нужно VPN (проверить можно этим).
        • 0
          Это ваш простовпн? Такой вопрос… Чем отличается платный впн за 1$ в месяц от антизапретного бесплатного?
          • +1
            Тем, что это обычный VPN с несколькими серверами, а антизапрет только для сайтов, занесенных в реестр (другие сайты заблокированы).
    • 0
      Рутрекер специально выключили или он отвалился?
      • 0
        Все, вроде бы, в порядке через оба сервера.
        Не пишите сюда, пишите на почту.
  • 0
    Кстати в некоторых случаях спасает то, что у некоторых сайтов IP раздаются разные для разных регионов (например, один для Европы, другой для США), а блочится только «русский». В таком случае иногда достаточно просто попробовать открыть сайт с использованием другого DNS-а (как ни странно помогает OpenDNS, www.opendns.com/home-internet-security/opendns-ip-addresses/, кому лень идти то вот их IP: 208.67.222.222 и 208.67.220.220)
  • +1
    Едрены пасатижи. Да 100 раз эта тема мусолилась, утилита DNSCrypt от OpenDNS + плагин Hola для браузера. Все работает максимально незаметно, о большинстве блокируемых сайтов вообще узнаю с Хабра.
  • 0
    Забавный способ, только у лостфильм что-то вся верстка поехала через этот веб-прокси.
    • 0
      можно любой другой вебпрокси вставить)
      • 0
        Да, уже.
  • +3
    открываю такие сайты через Опера Турбо
  • 0
    Еще один велосипед.

    У antizapret есть данные в парсибл формате. Никто не мешает создать proxy.pac и пускать трафик через прокси только для заблокированных сайтов.
    Или, как вариант, взять готовый и поменять строку на свою:

    return "PROXY proxy.antizapret.prostovpn.org:3128; DIRECT";
    


    Про подъем дешевого прокси писали ранее.
    • 0
      Еще добавлю, что proxy.pac с антизапрета фильтрует только по ип, что не есть хорошо. Лучше всего сделать реализацию по url.

      Сам использую proxy.pac только некоторых ресурсов, все мне не нужны — это факт :)
      • 0
        Это сделано для совместимости с теми, у кого блокировка по IP, да и работает быстрее всего. Там еще есть несколько адресов провайдерских заглушек, когда провайдеры блокируют сайты подменой DNS-ответов.
        Вообще, есть еще .pac с хостами, но он супер тормозит: antizapret.prostovpn.org/proxy-host.pac
        • 0
          Согласен, нужны оба варианта. В принципе у меня файл не большой и все довольно быстро летает по хостам…
        • 0
          Кстати, а в какой момент вообще выполняется этот файл? Один раз при загрузке, а дальше — только вызов функции, или каждый раз перед загрузкой страницы?
          • 0
            Да, в браузерах. К сожалению, разработчики приложений под Windows часто используют wininet так, что, вероятно, пересоздают инстанс на каждый запрос, и .pac-файл загружается, соответственно, каждый запрос, от чего у меня ШИНДОШС и 100 хитов на proxy.pac в секунду.
            • 0
              Но тогда можно кидать адреса не в массив, а в статический хеш — и искать в нем нужный домен за константное время. По-идее, он не должен так сильно тормозить.

              PS Кстати, надо бы проверить, как себя ведет стандартная библиотека System.Web с этим файлом…
          • 0
            В Linux (Chrome и Firefox) читается один раз при запуске, но проверяется при каждом запросе. Поэтому при его изменении приходится тушить браузер и запускать снова.
    • +4
      в мгазине велосипедов — все велосипеды разные. пусть будет право выбора, не занудствуйте, вы еще не стары)
      • –3
    • 0
      Если меня кто-нибудь пнет на выходных, я сделаю генератор .pac, в который можно свой адрес вписать.
  • +2
    по-моему, Роскомнадзор даже не представляет, на сколько рьяно заставляет работать смекалку, судя по комментариям к этой публикации: оказывается, всё ещё интересней.
  • +1
    Чешутся руки написать сервис, который будет по ?url= показывать оригинал. Тогда пользователю останется только лишь настроить hosts для blackhole.beeline.ru на этот новый сервис и получить прозрачную работу (которая мало напрягает сервис, т.к. не весь трафик идёт через него).
  • 0
    Я буду самым счастливым человеком на планете, если однажды получу вот такой редирект…
  • 0
    Зачем php? Можно и на js.
    <script>
    document.location.href='http://www.webproxy.net/view?q='+unescape(window.location.search.replace(/[^=]*=/i,''));
    </script>
    

  • 0
    Провайдеры могли бы отдавать статус 451 и Location: оригинальный-урл. Интересно, запрещено ли это законом.
  • 0
    А скрипт нужно повешать на домен blackholebeeline.ru, запоминаться легче будет, ну и вообще удобно
  • 0
    Знакомым, далёким от настроек компьютера рекомендую решать проблему так: для «проблемных» сайтов использовать яндекс-браузер (с включенным по-умолчанию режимом турбо)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.