- PVSM.RU - https://www.pvsm.ru -

Обходим блокировку сайта DPI двумя скриптами

В связи с разгулом банхамера по интернет просторам участились советы по использованию различных прокси, vpn, tor и анонимайзеров для обхода блокировок сайтов. Эти все способы отправляют трафик третей стороне которая его может перехватывать и модифицировать. Это не наш метод. Мы сейчас просто и легко научим браузер дурить DPI.

Я вдохновился этой статьёй [1] и сообразил относительно лёгкий способ ходить на заблокированные сайты прямо а не используя чужие прокси, дополнения и программы.

я осуществил необратимые манипуляции с доменным именем таким образом, чтобы не существовало ни одного достоверного и однозначного алгоритма обращения получившейся хеш-функции.

Исходные данные:
Заблокированный сайт(Адрес изменён):
http://rutracker.og

Это один из сайтов на который РКН ограничил доступ.

Страница блокировки(Адрес изменён):
http://198.51.100.0/...

Адрес страницы заглушки которая появляется при попытке открытия сайта. У каждого провайдера адрес страницы заглушки наверно разный.

Итак открываем блокнот и пишем первый скрипт:

function FindProxyForURL(url, host) {

  if (shExpMatch(url, "http://*") && shExpMatch(host, "rutracker.og")) {
    return "PROXY rutracker.og; DIRECT";
  }

  return "DIRECT";
}

Сохраняем как «proxy.pac»

Суть этого скрипта в том чтобы использовать как прокси сам сервер к которому мы и хотим получить доступ.

Подключаем «proxy.pac» в Chrome:
1. Настройки -> Показать дополнительные настройки ->
Сеть -> Изменить настройки прокси-сервера ->
Вкладка «Поключения» -> Настройка сети
2. Ставим галочку «Использовать сценарий автоматической настройки»
3. В поле адрес пишем полный путь к «proxy.pac»
Например: C:UsersnameDocumentsproxy.pac

Теперь страница блокировки будет появляется через раз.

Снова открываем блокнот и пишем:

// ==UserScript==
// @name BackUserJS
// @description Window History Back Script
// @author ivan386
// @license MIT
// @version 1.0
// @include http://198.51.100.0/*
// @run-at document_start
// ==/UserScript==

(function (window) { 
    var w;
    if (typeof(unsafeWindow)  != 'undefined') {
        w = unsafeWindow
    } else {
        w = window;
    }
   
    if (w.self != w.top) {
        return;
    }

    if (/http://198.51.100.0/.test(w.location.href)) {
		w.history.back()
    }
})(window);

Сохраняем как «back.user.js» в папку «back»

Этот скрипт возвращает нас на страницу где мы можем снова кликнуть заблокированную ссылку.

И опять открываем Блокнот и пишем:

{ 
    "manifest_version": 2,
    "content_scripts" : [
        {
            "js":[ "back.user.js" ], 
            "matches":[ "http://198.51.100.0/*" ], 
            "run_at":"document_start"  
        }
    ], 
    "description" : "Window History Back Script", 
    "name" : "BackUserJS",
    "version" : "1.0.0"
}

Сохраняем как «manifest.json» в папку «back»

Теперь добавим в Chrome как Расширение:
1. Дополнительные инструменты -> Расширения
2. Ставим галочку «Режим разработчика»
3. Нажимаем «Загрузить распакованное расширение...»
4. Находим папку «back» в которую сохраняли «back.user.js» и «manifest.json» и нажимаем ОК

Проверяем:
1. Перезагружаем Chrome
2. Нажимаем «Отмена» в окошке «Отключить расширения в режиме разработчика» справа.
3. Пишем в адресную строку адрес заблокированного сайта и нажимаем Enter.
4. ???
5. PROFIT

Использованные материалы:
Изучаем deep packet inspection у RETN [1]
Proxy Auto Configuration (PAC) [2]
Учимся писать userscript'ы [3]
Userscripts. Упаковываем юзерскрипт для Chrome [4]

Автор: ivan386

Источник [5]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/110744

Ссылки в тексте:

[1] этой статьёй: https://habrahabr.ru/post/192046/

[2] Proxy Auto Configuration (PAC): https://habrahabr.ru/sandbox/19972/

[3] Учимся писать userscript'ы: https://habrahabr.ru/post/129343/

[4] Userscripts. Упаковываем юзерскрипт для Chrome: https://habrahabr.ru/post/130436/

[5] Источник: https://habrahabr.ru/post/276141/