0

R httr POST リクエストを使用して bondora.com にログインしようとしています。このサイトは認証を使用していないようです:

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 のコメントによると、マルチパート TRUE と FALSE の設定にうんざりしましたが、助けにはなりませんでした。次に、ブラウザ経由でリクエストを検査し、同じヘッダーを追加しました。

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応答ヘッダーにあったように、要求ヘッダーにも追加しようとしましたが、どちらも成功しませんでした。

4

1 に答える 1