Верх страницы
Обложка к записи Обход санкций иностранных компаний
Время для прочтения: 0 мин. 38 сек.

Обход санкций иностранных компаний

В связи с санкциями многих иностранных компаний по отношению к пользователям из России очень часто не обновляются платные плагины через админку WordPress.

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

Данная проблема была замечена у наших хостинг-провайдеров Бегет и Таймвеб при попытке обновления Blocksy Pro.

Решение

Для решения данной проблемы в WordPress «из коробки» есть поддержка прокси, который настраивается парой констант в конфиге вашего сайта wp-config.php:

// Адрес прокси.
define( 'WP_PROXY_HOST', '192.168.84.101' );

// Порт прокси.
define( 'WP_PROXY_PORT', 8080 );

Если ваш прокси требует авторизации, то добавляем еще пару констант:

// Имя пользователя.
define( 'WP_PROXY_USERNAME', 'username' );

// Пароль пользователя.
define( 'WP_PROXY_PASSWORD', 'password' );

Если нужно исключить какие-то хосты из проксирования, можно указать их принудительно:

define(
    'WP_PROXY_BYPASS_HOSTS',
    'yandex.ru,beget.com,*.wordpress.org'
);

Вам не нужно указывать localhost и хост самого сайта в этом списке, так как они по умолчанию не проксируются. Значение должно быть представлено в виде списка, разделенного запятыми, также поддерживаются подстановочные знаки с использованием *. Например: *.wordpress.org.

И есть еще один несущественный минус в данном решении — поддерживаются только прокси с Basic аутентификацией. NTLM аутентификация не поддерживается.

Где взять прокси?

Свежий список бесплатных прокси вы всегда можете взять на сайте Free Proxy.

Проверка

Для проверки работы прокси, можно использовать хук отладки http_api_debug, в нём уже сложить данные запроса в лог-файл:

function mihdan_proxy_debug( $response, $type, $class, $args, $url ) {
    // Можно поменять var_dump на error_log().
    var_dump( 'URL: ' . var_export( $url, true ) );
    var_dump( 'Аргументы: ' . var_export( $args, true ) );
    var_dump( 'Ответ: ' . var_export( $response, true ) );
}

add_action( 'mihdan_proxy_debug', 'viper_http_api_debug', 10, 5 );

И после этого сделать тестовый запрос:

$api_url     = 'http://api.wordpress.org/secret-key/1.0/';
$response = wp_remote_get( $api_url );
$header     = wp_remote_retrieve_headers( $response );

var_dump( $header );

В ответе поищите заголовок via:, обычно так обозначаются прокси.

RTFM

Автор: Кобзарёв Михаил

Русский разработчик со стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Joomla, Drupal, Opencart, Laravel, Moonshine.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

11 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Елена
Елена
9 месяцев назад

Михаил, я, конечно, не спец, но решила восспользоваться вашим кодом. Поставила в wp-config.php вот этот код:

// Адрес прокси.
define( 'WP_PROXY_HOST', '192.168.84.101' );
// Порт прокси.
define( 'WP_PROXY_PORT', 8080 );

Попробовала обновить плагин крокоблок. Выдает ошибку. Может этот код здесь не работате?

Алексей
Алексей
9 месяцев назад
Ответить на  Кобзарёв Михаил

Этот тот адрес, который приведен в статье для примера :))

Елена
Елена
8 месяцев назад
Ответить на  Кобзарёв Михаил

Я не молчу, я отправляла коммент, посмотрите.

Елена
Елена
8 месяцев назад
Ответить на  Кобзарёв Михаил

Я писала, что живу в Германии, купила Крокоблок, но заплатила русской картой. Теперь они не дают его обновить. Я не знаток этих прокси, но как я понимаю, хостинг у меня Бегет, обычный тариф Старт. Никакой авторизации нет. Я пробовала и данные из примера и данные с сервиса, т.е. живые сервера. Если не меняю ничего, то посылает меня подальше, если ставлю один из серверов с сервиса, то просто пишет ерор и зайдите попозже (

Elena Brausmann
Elena Brausmann
8 месяцев назад
Ответить на  Кобзарёв Михаил

Ок. Спасибо, Михаил! Я так и подумала.

Артур
Артур
2 месяцев назад

А как бы мне сделать так, чтобы wordpress стучался через прокси только к *.openai.com, а во все остальное — без прокси?
Обратная команда WP_PROXY_BYPASS_HOSTS есть?

Предыдущая запись

Давайте дружить
в Телеграме

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы