войти на сайт php используя RCurl - PullRequest
2 голосов
/ 03 июня 2011

Я хотел бы получить доступ с помощью R к содержимому веб-сайта php
http://centralgreen.com.sg/login.php?login=9-1501&password=mypassword

Я передал пример логина + пароля в URL, но не знаю, какнажмите кнопку входа через URL.

Я хотел бы использовать пакет R RCurl , если это возможно.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2013

недавно у меня возникла такая же проблема.В моем случае я решил это следующим образом, используя пакет RCurl (с запросом POST).

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

login <- function (xxxx_user, xxxx_pass) {

  url_login <- 'http://centralgreen.com.sg/login.php'

  curlhand <- getCurlHandle()

  curlSetOpt(
     .opts = list(cainfo = system.file("CurlSSL", "cacert.pem", package = "RCurl")),
      cookiefile = "cookies.txt",
      useragent = 'YOUR R-PACKAGE NAME',
      followlocation = TRUE,
      # might need this in case the server checks for the referer..
      httpheader = "Referer: http://centralgreen.com.sg",
      curl = curlhand)

  # (1) first call to initializate session. you get the session cookie
  getURL(url_login, curl = curlhand)

  params<- list( login = xxxx_user, password = xxxx_pass )
  # might need to add some other hidden form param in case there are..

  # (2) second call, sends the form, along with a session cookie
  html = postForm(url_login, 
    .params = params, 
    curl = curlhand, 
    style="POST")

  # ... perform some grep logic with 'html' to find out weather you are connected 
}

# you call the function...
login("yourusername", "yourpass")

Примечание «выполнить некоторую grep logic» учитывает тот факт, что, поскольку вы нацеливаетесь наСистема, не предназначенная для такого рода программных входов в систему, не даст вам какой-либо приятной подсказки о результате попытки ... поэтому вам может понадобиться проанализировать необработанную HTML-строку, которую вы получаете, с некоторыми ключевыми предложениями (например, «неправильно»).имя пользователя или пароль '...)

надеюсь, это поможет

0 голосов
/ 03 июня 2011

Форма отправляется по почте - вы используете запрос get в данный момент по внешнему виду, вам нужно использовать post.

Я предполагаю, что rcurl основан на curl - и я знаю curlможет сделать это, так должно быть возможно.

...