使用 POST 方法成功登录后重定向到页面时如何继续

How to proceed when redirected to page after successful sign in with POST method

我已经使用 R 3.5.2 登录了一个网站,使用 rvest_0.3.4 和 httr_1.4.0 似乎都很顺利,但后来我陷入了重定向在我点击按钮 "Login!" 后,在浏览器 (Chrome) 上仅显示几秒钟的页面。

有问题的步骤似乎是 form method="post" input type="hidden",我无法从 R 提交。

CDP页面登录

URL

登录 <- "https://www.cdp.net/en/users/sign_in"

rvest

library(rvest)

user.email <- "my_email"
user.password <- "my_password"

signin.session <- html_session(signin)
signin.form <- html_form(signin.session)[[1]]
filled.signin <- set_values(signin.form, 
                            `user[email]` = user.email, 
                            `user[password]` = user.password)

signed.in <- submit_form(signin.session, filled.signin)
read_html(signed.in) %>% html_node("form")

httr

library(httr)

login <- list(
    `user[email]` = "my_email",
    `user[password]` = "my_password",
    submit = "Login!")

signed.in.post <- POST(signin, body = login, encode = "form", verbose())
http_status(signed.in.post)

content(signed.in.post, as = "parsed")

read_html(signed.in.post$url) %>% html_node("form")

我的目标是访问我的帐户并浏览网站,但我不知道如何通过 R 的重定向页面。

已解决!
这是一个非常简单直观的解决方案,我只需要提交重定向页面的 form method="post" input type="hidden",即在 signed.in 会话中遇到的页面。 我用 rvest 解决了它,但我认为 httr 也同样容易,这是我使用的代码:

   library(rvest)

   signin.session <- html_session(signin)
   signin.form <- html_form(signin.session)[[1]]
   filled.signin <- set_values(signin.form, 
                               `user[email]` = user.email, 
                               `user[password]` = user.password)

   signed.in <- submit_form(signin.session, filled.signin)
   redirect.form <- html_form(signed.in)[[1]]
   redirected <- submit_form(signed.in, redirect.form) 

最后这个对象redirected是一个session-class object,基本上是登录网站后可以正常浏览的页面

如果有人有更短、更有效、更elegant/sexy/charming的解决方案可以继续...请不要犹豫,分享它。
我是网络抓取的绝对初学者,我很想了解更多有关这些操作的信息!

谢谢

使用最新的 httr 函数名称更新 IvanP 之前的响应

library(rvest)

signin.session <- session(signin)
signin.form <- html_form(signin.session)[[1]]
filled.signin <- html_form_set(signin.form, 
                   `user[email]` = user.email, 
                   `user[password]` = user.password)

signed.in <- session_submit(signin.session, filled.signin)
redirect.form <- html_form_set(signed.in)[[1]]
redirected <- session_submit(signed.in, redirect.form)