2014-04-21 57 views
0

我試圖登錄登錄到bondora.com用,使用R HTTR POST請求,因爲這個網站似乎沒有使用身份驗證:[R HTTR POST請求爲

library(httr) 
login <- "https://www.bondora.com/en/login" 
pars <- list(
    username = "MyUserName", 
    password = "MyPassword" 
    ) 
POST(login, body = pars) 

登錄後,網站將用戶引導回到登陸頁面bondora.com/en/home,而是如果我解析POST請求我得到相同的頁面標題作爲一個從登錄頁面:

library(XML) 
test <- POST(login, body = pars) 
test <- content(test, as = "text") 
parsedHtml <- htmlParse(test, asText = TRUE) 
xpathSApply(parsedHtml, "//title", xmlValue) 
[1] "Join or log in|Loans and investing|Bondora" 

我試着在其他一些網站上使用相同的技術,它似乎工作得很好,除了這個網站。從POST命令的輸出如下:

POST(login, body = pars) 
    Response [https://www.bondora.com/en/login] 
     Status: 200 
     Content-type: text/html; charset=utf-8 
    <!DOCTYPE HTML> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 

...

我還應該用於登錄到bondora.com/en/login使用一些特定的設置?

更新1 按照@hadley評論,我累了設置多真假,但沒有幫助。然後,我通過檢查瀏覽器的請求,並添加相同的標題:

login <- "https://www.bondora.com/en/authenticate" 
pars <- list(
    username = "username", 
    password = "password" 
) 
headers <- list(
    "User-Agent" = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:28.0) Gecko/20100101 Firefox/28.0", 
    "Referer" = "https://www.bondora.com/en/login?returnurl=/en/home", 
    "Host" = "www.bondora.com", 
    "Connection" = "keep-alive", 
    "Accept-Language" = "en-US,en;q=0.5", 
    "Accept-Encoding" = "gzip, deflate", 
    "Accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" 
) 
POST(login, body = pars, add_headers(.headers = character(headers))) 
Error in character(headers) : invalid 'length' argument 

看來,我需要爲做了HTML錯誤411指示指定長度參數。我應該怎麼做?我也嘗試將Content-Length = 9844添加到請求標題中,因爲它在響應標題中,但也沒有成功。

+0

好奇,爲什麼你會想從R鍵登錄?也許你的''pars'對象需要首先作爲json,所以'POST(login,body = toJSON(pars))' – sckott

+0

我想登錄刮一些消費者信用數據。我嘗試過toJSON,但結果仍然相同。 – Siim

+1

如果你看HTML,表單POST到「/ en/authenticate」,而不是「/ en/login」 – hadley

回答

2

我能夠通過升級httr_0.4解決這httr_0.5