使用 R 将登录表单发布到 coursera;GET 时看不到表单

POSTing a login form to coursera using R;cannot see the form when GET

我正在尝试 post 一个登录表单来登录 coursera,但我还没有成功。

使用 coursera,登录 URL 上的登录表单会提前显示。如果我通过 getURL 获取网站,甚至在 post 登录表单之前,然后将其写入文件,我看不到与用户名和密码相关的字段,基本上我看不到实际的表单,顺便说一句,使用 Firebug 或我可以看到的检查元素。

例如,如果您尝试以下代码,您可以看到我们通过阅读页面获得的输出html。

library(RCurl)
library(XML)

defaultOptions <- curlOptions(
    httpheader = list('user-agent'=str_c(R.version$platform,R.version$version.string,sep=", ")),
followlocation = TRUE,
cookiefile = "RCurlCookies.txt",
cainfo = system.file("CurlSSL","cacert.pem", package = "RCurl"))

options(RCurlOptions = defaultOptions)
handle <- getCurlHandle()
url <- getURL("https://www.coursera.org/?authMode=login", 
          curl = handle, .opts = defaultOptions, ssl.verifyhost = 0L, ssl.verifypeer = 0L)

con <- file("output.html")
writeLines(con = con, url)
close(con)
options(RCurlOptions = list())

所以我猜这就是 POST 也不起作用的原因,因为它看不到表格。如果确实如此,那么我可以使用 whether RHTMLForms' or usepostForm` 通过创建句柄并提供一些参数来实际进行身份验证。

postForm(url, .params = params, curl = curl, style="post", cainfo=signatures)

我希望能够 post 使用用户名:"username" 和密码:"xxxxxxxxxx" 的登录表单。

P.S 使用 R 的任何其他方法也很好,到目前为止我能够处理 RSelenium,它对浏览器版本有很多大惊小怪,并创建一个会话,否则会很好.

我尝试使用 docker Selenium 与浏览器交互并提交表单,这似乎没有任何问题并且工作正常。我强烈建议在 R 或其他语言(例如 python.

中使用 Selenium