2016-08-03 3 views
0

Я уже позади брандмауэра, следовательно, используя прокси.httr 'Клиентская ошибка: (407) Требуется аутентификация прокси'

library(httr) 

set_config(
    use_proxy(url="18.91.12.23", port=8080) 
) 
r <- GET('http://httpbin.org/get',verbose()) 
http_status(r) 

Вот ошибка, которая показывает:

r <- GET('http://httpbin.org/get',verbose()) 
-> GET http://httpbin.org/get HTTP/1.1 
-> Host: httpbin.org 
-> User-Agent: libcurl/7.47.1 r-curl/0.9.7 httr/1.2.1 
-> Accept-Encoding: gzip, deflate 
-> Proxy-Connection: Keep-Alive 
-> Cookie: BCSI-CS-342e9f19b1226740=2 
-> Accept: application/json, text/xml, application/xml, */* 
-> 
<- HTTP/1.1 407 Proxy Authentication Required 
<- Proxy-Authenticate: NTLM 
<- Proxy-Authenticate: BASIC realm="onmi" 
<- Cache-Control: no-cache 
<- Pragma: no-cache 
<- Content-Type: text/html; charset=utf-8 
<- Proxy-Connection: close 
<- Set-Cookie: BCSI-CS-342e9f19b1226740=2; Path=/ 
<- Connection: close 
<- Content-Length: 3645 
<- 
> http_status(r) 
$category 
[1] "Client error" 

$reason 
[1] "Proxy Authentication Required" 

$message 
[1] "Client error: (407) Proxy Authentication Required" 

Я попытался создать прокси-сервер в моем интернет-проводник, Sys.setenv(), with_config (use_proxy()). Но никто из них не работает, и я получаю ту же самую ошибку клиента 407.

Я пробовал GET, POST с разными URL-адресами, но это та же ошибка. Пожалуйста помоги!

+0

Это, как представляется, позволяют предположить, что вы войти в систему, чтобы использовать прокси-сервер или он проходит NTLM кредитки прозрачно (что означает вы, наверное, используете IE или Edge при просмотре интернета). 'use_proxy()' также имеет 3 других параметра: 'username',' password' и 'auth'. Я предлагаю хранить ваши прокси-серверы в переменных среды, используя 'Sys.getenv()', чтобы передать их в эти параметры и попробовать 'ntlm' в качестве параметра для' auth'. ИТ/ИТ-аудит не понравится сохраненным кредитам, кстати. – hrbrmstr

+0

Вы также можете увидеть, что 'curl :: ie_proxy_info()' дает вам – hadley

ответ

0

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

Пример с использованием основных полномочий:

use_proxy(url = "18.91.12.23", port = 8080, username = "username-you-wish-to-use", password = "password-you-wish-to-use", auth = "basic") 

Пример использования NTLM учетных данных

use_proxy(url = "18.91.12.23", port = 8080, username = "username-you-wish-to-use", password = "password-you-wish-to-use", auth = "ntlm") 
+0

На самом деле прокси не требует имени пользователя и пароля при использовании в браузере или в Windows. – amrrs

+0

Он делает, но как аутентификация NTLM, так и Kerberos может произойти в фон без вмешательства пользователя. Если зарегистрированный пользователь является пользователем домена. Ответ указывает, что Proxy предпочитает NTLM, а затем базовый тип аутентификации, поэтому обычно это то, что произошло. Вы могли бы проверить это с захватом пакетов и попытаться найти следующий запрос после того, как прокси спрашивает об аутентификации. –

Смежные вопросы