2016-08-03 133 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" 

我試着在我的Internet Explorer中設置代理,Sys.setenv(),with_config(use_proxy())。但是,這些都沒有工作,我得到相同的客戶端錯誤407.

我已經嘗試GET,POST與不同的URL,但它又是一樣的錯誤。請幫忙!

+0

這似乎表明您登錄到使用代理服務器或者透明地通過NTLM creds(意思你可能在瀏覽互聯網時使用IE或Edge)。 'use_proxy()'還有其他3個參數,'username','password'和'auth'。我建議使用'Sys.getenv()'將它們傳遞到這些參數中,並將'ntlm'作爲'auth'的參數來存儲您的代理權限。 IT/IT審計不會喜歡存儲的信用,順便說一句。 – 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類型的身份驗證都可能發生沒有用戶干預的背景。如果登錄的用戶是域用戶。該響應表明代理更喜歡NTLM,然後是基本憑證類型的身份驗證,所以通常情況就是這樣。您將能夠使用數據包捕獲來驗證這一點,並在代理詢問身份驗證後嘗試查找下一個請求。 –

相關問題