Anton Kovalenko (akovalenko) wrote,
Anton Kovalenko
akovalenko

Как с удобством плевать на национальный файрволл великороссов

В сети полно рецептов для обхода блокировок, но у многих из них есть фатальный недостаток. Нет, не этот.

Я не хочу ходить через прокси-сервер или tor всюду, предоставляя свои данные промежуточным узлам с неизвестными владельцами. Мне в этом случае не нужна анонимность (иначе было бы как раз правильно держать для таких вещей отдельный браузер или отдельный компьютер, на худой конец отдельную виртуальную машину). Моя цель -- нейтрализовать конкретные блокировки, но при этом ходить в незаблокированное подмножество интернета через обычный канал передачи данных, с моим настоящим IP-адресом и нормальной скоростью. (Ещё раз предупреждаю: для анонимности, для того чтобы вас "не отследили" и "не вычислили", такой подход вреден).

Расскажу, как я решил эту задачу для себя; мало кому это решение сгодится в качестве пути наименьшего сопротивления, потому что у меня довольно экзотические привычки; но можно позаимствовать идеи (никакого rocket science здесь нет, разумеется).

1. Отставил в сторону публичные прокси-серверы, общедоступные анонимайзеры и прочие бесплатные сервисы без обязательств. Они очень удобны, когда надо обойти ограничение прямо вот сейчас, но в долгосрочном плане таким сервисам свойственно накрываться, или быть забаненными, или работать ненадёжно, или всё это сразу. Заказал за деньги VPS в стране со слабыми противонаправленными скрепами. Если у вас есть подходящий сервер по служебной необходимости, можно использовать его; желательно, чтобы ваши отношения с владельцем сервера не подразумевали запрет на такое использование.

Некоторые хостеры позволяют оплатить VPS широкоизвестным запрещенным денежным суррогатом (а вдруг вы им запаслись). Это полезно для того, чтобы ваша банковская выписка не кричала о ваших намерениях.

2. Для меня проще всего оказалось использовать SOCKS proxy, встроенный в SSH. ОС Linux: ssh -D 1080 my-user-name@server.name (соединяется с внешним сервером и создаёт SOCKS-прокси на локальном интерфейсе, 127.0.0.1, на порту 1080), рецепты для Windows смотрите в других местах (SSH-клиент для Windows называется putty). Пробуем запустить google-chrome с параметром --proxy-server socks5://localhost:1080, убеждаемся, что всё читается нормально. Теперь пробуем устроить так, чтобы ходить в разрешённую часть интернета напрямую, а наоборот -- наоборот.

3. Ставим расширение SwitchySharp для google-chrome (даже если у вас другой любимый браузер, вам может пригодиться остальная часть рецепта). Оно интуитивно настраивается, и у него есть режим "Auto Switch Mode", который по заданным правилам переключает использование прокси-сервера для адресов, соответствующих определенным образцам (можно задать wildcard вроде http://*.livejournal.com или регулярное выражение вроде ^http://(www\.)?grani\.ru/).

На этом этапе всё должно работать в chrome. Однако разработчики SwitchySharp позаботились и о пользователях остальных браузеров.

4. В окне настройки SwitchySharp есть вкладка Import/Export, на которой, в свою очередь, есть кнопка "Export PAC file". Этот самый PAC-файл -- так называемый "файл автонастройки прокси", который годится для любого современного браузера. Файл представляет из себя кусок javascript'а, который по URLу определяет, какой прокси для него надо использовать (и надо ли). Наши правила, которые мы вводили в google chrome через дружественный интерфейс, автоматически превращаются в правильный javascript. Теперь достаточно указать в другом браузере "URL автоматической настройки proxy" (обычно это делается примерно там же, где можно задать proxy вручную), который будет выглядеть как file:///путь/к/тому/месту/где/лежит/SwitchyPac.pac.

Если кому понятно почти всё за исключением деталей -- могу пояснить (а заодно исправить сам текст в сторону большей ясности). Если всё понятно, но нет соответствующего сервера и душит жаба -- могу поделиться доступом (с теми, кого более-менее знаю).

Если вы нашли и применили любой другой рецепт, использующий прокси, и теперь все запросы идут через прокси, а вам хочется сделать как у меня -- поставьте google chrome, поставьте SwitchySharp, настройте правила, экспортируйте PAC-файл и прописывайте его местоположение в качестве URL автонастройки в других браузерах. (Это и есть "изюминка" моего способа и причина для написания поста: объяснения про ssh можно спокойно пропустить, ключевой момент -- это как перейти от использования прокси для всего подряд к использованию прокси для чего надо).

Неплохой клиент SSH для android-устройств называется Irssi Connectbot. Там можно создать перенаправление порта с типом "динамический (SOCKS)", это будет аналогом вышеописанного параметра -D. Расширений наподобие SwitchySharp я для андроида не видел (это не значит, что их нет), но, к примеру, в Firefox для android можно на странице about:config указать и фиксированный socks proxy (setwork.proxy.socks), и URL автонастройки (network.proxy.autoconfig_url). Это всё я не тестировал, только предполагаю, что должно работать.
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 6 comments