недавно у меня возникла такая же проблема.В моем случае я решил это следующим образом, используя пакет 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-строку, которую вы получаете, с некоторыми ключевыми предложениями (например, «неправильно»).имя пользователя или пароль '...)
надеюсь, это поможет