x.Block : Проксирование веб-ресурсов
Опубликовано: Бармалей · 19.04.2019 · 00:01 ••• Обновление: 11.01.2021 · 12:46 0

Проксирование является одной из важных опциональных возможностей расширения x.Block : "Русский резак".

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

Если рассматривать упрощённо, при проксировании в x.Block'е производится обычный редирект на URL, вычисляемый "на лету" по специальному алгоритму преобразования. За общую работоспособность проксирования отвечает соответствующий отдельный модуль, загружаемый только если эта функция включена в Настройках.

Фактически, эта функция равносильна применению прокси "on-demand" (вызов по требованию), с ней x.Block может применяться в качестве замены любым расширениям для "разового" доступа к ресурсам (таким, например, как "Агрегатор прокси-доступа" или аналогичным). Тем не менее, для полноценного анонимного сёрфинга лучше, всё же, использовать "настоящие" прокси-аддоны, такие как UltraSurf VPN RU или аналогичные.

В этой статье:


Цели и способ проксирования доступа к ресурсам

Для работы с недоступными* напрямую веб-ресурсами в "Русском резаке" имеется возможность опциональной загрузки этих ресурсов через прокси, позволяющая обойти практически любое ограничение доступа.

* Например, в Windows XP – из-за "непонимания" этой ОС современных алгоритмов шифрования (печально известная ошибка ERR_CIPHER_MISMATCH). Это, в частности, приводит к невозможности прямой загрузки подписок из некоторых репозиториев, на сайтах которых установлены неподдерживаемые в "старых" системах SSL-сертификаты.

В качестве сети анонимных прокси задействуются бесплатные официальные прокси и текущие рабочие зеркала проекта ProxyPy. Серверы проекта обеспечивают достаточную (для разового доступа) скорость и вполне приемлемую надёжность работы.

Следует помнить, что все прокси проекта работают только по протоколам http/https, использовать их для доступа к ресурсам по другим протоколам нельзя.

Изначально проксирование применялось только при ошибках прямой загрузки обновлений фильтров и подписок с их основного адреса. В дальнейшем эта функция получила развитие и в текущих билдах x.Block'а можно задавать правила безусловного проксирования для любых веб-ресурсов (например, в целях антиблокировки).


Включение и настройка проксирования

Использование прокси опционально, включается и настраивается в соответствующем блоке опций в Настройках:


[Копия скриншота]

В этом блоке доступны следующие опции и настройки:

"Применять прокси-правила для обхода ограничений" – принципиальное разрешение использования прокси.

"Через прокси по умолчанию" – выбирать прокси только из списка по умолчанию ("зашит" в коде релизов).

"Только HTTPS-прокси" – из общего списка серверов, понятно, будут выбираться только httpS-прокси.

"Проверять прокси-запросы на соответствие правилам блокировки" – значительно повышает качество очистки проксируемых ресурсов от различного инфо-мусора, проверка запросов при этом производится в "чистом" виде по исходному проксируемому адресу на его соответствие всем заданным правилам блокировки контента. При интенсивном сёрфинге эта опция может существенно снижать общую скорость работы и повышать загрузку CPU, так как связана с двойным пересчётом конечного адреса запроса (при каждом запросе обратно перевычисляется исходный проксируемый URL).

Изменение списка прокси-серверов по умолчанию

Начиная с версии 2019.6.14 (ECR#4) есть также возможность самостоятельно задавать в Настройках массив адресов прокси-серверов. Это связано с тем, что список бесплатных сторонних прокси (размещённых на хостинге *.appspot.com) периодически меняется, а отдельные хосты, бывает, со временем прекращают работу, что может приводить к ошибкам доступа при попытке их использования.

В массиве адресов прокси допустимо указывать только рабочие зеркала прокси-серверов проекта ProxyPy, размещённые на хостинге *appspot.com. При внесении изменений в список следует указывать только имя домена третьего уровня (например, proxyfiles), при обработке списка в модуле управления прокси домены .L2.L1 будут добавлены автоматически.

В любом случае – при внесении изменений в список прокси следует учитывать:

  • Протокол (http/https) работы прокси, влияет на выбор прокси в соответствии с настройками.
    Проверка протоколов, поддерживаемых конкретными прокси, производится только вручную – пробными заходами в браузере на корневой URL прокси по соответствующим протоколам (http или https). Если при заходе по http вас автоматически перебрасывает на httpS-хост – значит, этот прокси "не умеет" работать по http, только по httpS. Такие прокси следует указывать в первом блоке списка, чтобы избежать в дальнейшем ненужной потери времени на автоматический редирект. Прокси, поддерживающие оба протокола, наоборот, следует указывать именно во втором блоке списка, это расширяет возможности выбора при различных опциях настроек.
  • Текущую работоспособность самого хоста, на котором конкретный прокси размещён.
    Также проверяется только вручную, прямым заходом на страницу корневого URL прокси в браузере. Если на этой странице отображается стандартная форма ввода адреса для проксирования – это рабочий прокси-хост. При прочих равных – не следует торопиться с правкой списка и "немедленно выкидывать" неработающие прокси, зачастую они могут быть неработоспособны лишь временно.
  • Поддержку формата ProxyPy – связано с "зашитым" в прокси-модуль алгоритмом формирования адреса.
    Поддержка других проксеров (со своей спецификой формирования адресов) в настоящий момент не используется. Это связано с достаточность функционала проекта ProxyPy для решения заявленных задач в x.Block'е – аддон, всё же, является "просто рекламорезкой" и не предназначен для использования в качестве полноценного прокси.)

Использование прокси для загрузки фильтров и подписок

При использовании проксирования для загрузки и обновления подписок используется тот же подход, что и для проксирования любых других URL. Следовательно, для этого также необходимо задать соответствующие правила проксирования (синтаксис указан ниже) для адресов конкретных репозиториев.

Кроме того, можно использовать и соответствующую настройку в блоке "Обновление фильтров и правил" – опцию "Альтернативная прокси-загрузка: повторный запрос файла через прокси при ошибке загрузки с основного адреса". При этом прокси будет задействован независимо от общих настроек проксирования, перечисленных выше – если общая настройка проксирования ВЫКЛючена (галка снята), модуль запуска прокси будет автоматически подгружаться только на период обновления подписок, не занимая память во время текущей работы x.Block'а.

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


Дополнительный синтаксис правил проксирования

Проксирование в x.Block – это частный случай редиректа, автоперенаправление запросов на прокси.

Для задания собственных правил используется специальный синтаксис (выделено красным):
!prx!example.com>>pp (или ...>>pps или пусто)

Такое правило приводит к тому, что все запросы к хосту example.com будут перенаправлены через прокси. При этом следует учитывать "перекрывающие" особенности – т.е. все домены *.example.com также попадают под действие этого правила, поэтому будьте предельно внимательны при задании собственных правил.

Кроме первого параметра, указывающего на необходимость проксирования заданного URL, есть и второй, определяющий тип применяемого прокси:

  • если указан конкретный параметр >>pp = домен всегда проксируется через http-прокси;
  • если указан конкретный параметр >>pps = домен всегда проксируется через https-прокси;
  • если этот параметр не указан = домен проксируется через случайно выбранный тип прокси (http или https, 50/50).

Возможные проблемы и ошибки при проксировании

Для повышения степени анонимности доступа и в целях обеспечения более надёжного проксирования в x.Block'е производится случайный выбор прокси (и перерасчёт конечного закодированного URL) каждый раз и для каждого отдельного запроса.

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

Кроме того, массированное проксирование множества разных ресурсов (особенно – часто используемых) приводит к повышенной нагрузке на CPU (помним о постоянном перерасчёте адресов запросов!) и снижает общее быстродействие не только x.Block'а, но и всего браузера в целом. Это обязательно следует учитывать при интенсивном сёрфинге на "слабых" компьютерах, а также при работе на мобильных девайсах при питании от батареи.

Для "отлова" возможных ошибок при проксировании следует использовать логирование доступа, включив в Настройках галку "Диагностика: вывод в консоль сообщений об ошибках и отладочной информации". Теперь, в случае ошибок, в консольном логе будут появляться соответствующие записи, которые можно проанализировать и использовать для устранения проблем доступа (в частности – исправить список прокси, удалив из него неработающие хосты).

Полезный совет: Для оперативного "обхода" конкретного неработающего прокси достаточно просто перезагрузить проксируемую страницу (или повторить* обновление подписок, если проблема связана с их загрузкой через прокси). В этом случае, как сказано выше, произойдёт перевыбор конкретного прокси из общего списка серверов и ошибка будет "самоустранена".

* Не требуется, если в Настройках задано автоматическое повторение обновления подписок при наличии ошибок их загрузки. При этом в большинстве случаев вы даже не заметите проблему – x.Block "разрулит" её самостоятельно путём фонового автоперебора прокси.)



Технические детали Бармалей
Бармалей 19.04.2019 11.01.2021 288 0.0

Общие технические сведения о разработке
Статус разработки:Активная, поддерживается автором
Язык интерфейса:Русский
Версия браузера:29+
Протестировано в:SRWare Iron 29/31/36/49 + 360 Extreme Explorer 9/11/12/13 (CR63/69/78/86)
Технологии и API:Чистый JavaScript (ES5), API: content-script, privacy, webRequest, contentSettings, contextMenus, storage, browserAction

Поделиться

Всего комментариев: 0
close