У меня было много проблем с подключением сетевого прокси. Я уже попробовал несколько установок, но ни одна из них не сработала. Самый близкий из них возвратил ошибку «HTTP / 1.1 407 Proxy Authentication Required [Proxy-Authenticate]», хотя я уже проходил аутентификацию.
Вот код, который я использую:
<?php
// Edit the four values below
$PROXY_HOST = "proxy.det.nsw.edu.au"; // Proxy server address
$PROXY_PORT = "8080"; // Proxy server port
$PROXY_USER = "USERNAME"; // Username
$PROXY_PASS = "PASSWORD"; // Password
// Username and Password are required only if your proxy server needs basic authentication
$auth = base64_encode("$PROXY_USER:$PROXY_PASS");
stream_context_set_default(
array(
'http' => array(
'proxy' => "tcp://$PROXY_HOST:$PROXY_PORT",
'request_fulluri' => true,
'header' => "Proxy-Authorization: Basic $auth"// Remove the 'header' option if proxy authentication is not required
)
)
);
$targetURL = "http://stackoverflow.com/questions/17111112/using-get-headers-with-a-proxy";
print_r(get_headers($targetURL, 1));
echo ("<br><br>");
$result = file_get_contents($targetURL);
?>
А вот и возврат с прокси:
Array ([0] => HTTP / 1.1 Требуется 407 прокси-аутентификация
[Proxy-Authenticate] => Array ([0] => NEGOTIATE [1] => NTLM)
[Cache-Control] => no-cache [Pragma] => no-cache [Content-Type] =>
текст / html; charset = utf-8 [Proxy-Connection] => закрыть [Set-Cookie] =>
BCSI-CS-47afdfff6410962d = 2; Путь = / [Соединение] => закрыть
[Content-Length] => 653)Предупреждение:
file_get_contents (http://stackoverflow.com/questions/17111112/using-get-headers-with-a-proxy):
не удалось открыть поток: HTTP-запрос не выполнен! HTTP / 1.1 407 прокси
Требуется аутентификация в C: \ inetpub \ wwwroot \ sites \ phpProxyTest.php
на линии 36
Если это помогает, я пытаюсь аутентифицировать пользователей по прокси-серверу, чтобы увидеть, являются ли они действительным пользователем, поэтому мне нужен только ответ Да / Нет от прокси-сервера для этого. К сожалению, у меня нет доступа к учетной записи администратора или другим частям прокси-сервера, поэтому прямой доступ к пользователям невозможен. Буду признателен за любую помощь, и, пожалуйста, спросите, если вам нужна дополнительная информация.
проверка подлинности в HTTP для прокси-сервера регулируется конфигурацией прокси-сервера.
В вашем случае прокси — это только рекламная поддержка NEGOTIATE и NTLM, поэтому отправка Basic не будет принята.
Также вы говорите, что вы «уже аутентифицированы», но это не ваш звонок. Если вы ранее проходили аутентификацию на прокси-сервере (например, с помощью веб-браузера), он может считать вас аутентифицированным или может потребоваться аутентификация каждого соединения с прокси-сервером.
вам нужно будет использовать NTLM или NEGOTIATE, чтобы пройти этот прокси.
Других решений пока нет …