Как использовать HTTP API с прокси-сервером?


Если я хочу направить HTTP-запрос через локальный (псевдоним: на текущем сервере) прокси-сервер, как бы я обошел это?

Допустимые настройки прокси-сервера для wp-config.php следующие:

# HTTP Proxies
# Used for e.g. in Intranets
# Fixes Feeds as well
# Defines the proxy adresse.
define( 'WP_PROXY_HOST',          '127.0.84.1' );
# Defines the proxy port.
define( 'WP_PROXY_PORT',          '8080' );
# Defines the proxy username.
define( 'WP_PROXY_USERNAME',      'my_user_name' );
# Defines the proxy password.
define( 'WP_PROXY_PASSWORD',      'my_password' );
# Allows you to define some adresses which 
# shouldn't be passed through a proxy.
define( 'WP_PROXY_BYPASS_HOSTS',  'localhost, www.example.com' );

Этот вопрос является продолжением этого вопроса.

Author: Community, 2012-12-05

1 answers

Настройки прокси-сервера работают так же, как обычные HTTP-запросы, но в данном случае, очевидно, маршрутизируются через прокси-сервер. С точки зрения WordPress все транспортные уровни API поддерживают прокси-соединения (fsockopen, fopen, CURL,).

Особенности конфигурации прокси-серверов заключаются в том, что они бывают разных видов, и каждая настройка отличается, поэтому ответить на этот вопрос сложно, на самом деле не имеет значения, находится ли ваш прокси на локальном хосте или удаленном, настройки wp-config.php будут работать независимо. Обычно вы хотите использовать эти параметры, если вы находитесь в интрасети/брандмауэре, к которому предъявляются особые требования.

Стоит отметить, что вы можете просто настроить свой локальный хост/веб-сервер на использование прокси/цепочки по умолчанию для HTTP-запросов, и в этом случае ненеобходимо устанавливать какие-либо параметры с помощью wp-config.php, так как это настроено на уровне сервера. Если вы отключите свой прокси-сервер, вы обычно увидите код ответа error 130 ERR_PROXY_CONNECTION_FAILED, но эти настройки выходят за рамки WordPress.

Некоторые инструменты, которые могут помочь вам настроить и отладить прокси-соединения:

Чтобы разобраться в HTTP API WordPress, я рекомендую следующий фрагмент, используя действие http_api_debug (изменено на var_dump, найденное на сайте viper007bond):

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

function viper_http_api_debug( $response, $type, $class, $args, $url ) {
    // You can change this from error_log() to var_dump() but it can break AJAX requests
    var_dump( 'Request URL: ' . var_export( $url, true ) );
    var_dump( 'Request Args: ' . var_export( $args, true ) );
    var_dump( 'Request Response : ' . var_export( $response, true ) );
}

В Ответ на запрос - интересная часть, иногда вы можете с первого взгляда определить, проходит ли ваш запрос через прокси..

Например, используя HTTP API по умолчанию для выполнения следующего запроса.

$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);

enter image description here

Теперь тот же самый запрос, но с использованием удаленного прокси-сервера, включенного через wp-config.php

//I grabbed these off of Google search they will not work for long.
define( 'WP_PROXY_HOST', '210.22.115.162' );
define( 'WP_PROXY_PORT', '3128' );

enter image description here

Как вы можете видеть, прокси вывод отличается, самое главное, что прокси добавляет тег via, в данном случае прокси-сервер кальмара. Прокси-серверы должны делать это и не изменять заголовок ответа сервера, но не все следуют правилам, поэтому будьте осторожны;).

Константа define( 'WP_PROXY_BYPASS_HOSTS', 'localhost, www.example.com' ) полезна для предоставления доступа к хостам, которые вы, возможно, не захотите использовать через прокси (например, обновления WordPress). Комментарии в class-http.php вводят в заблуждение, потому что по умолчанию localhost и get_option('siteurl); уже включены, но могут быть изменены с помощью фильтра pre_http_send_through_proxy.

Некоторые дополнительные опции, которые работа с настройками прокси-сервера:
WP_HTTP_BLOCK_EXTERNAL WP_ACCESSIBLE_HOSTS

 7
Author: Wyck, 2012-12-06 00:51:16