我正在尝试在黑板上卷曲页面(一种流行的大学课程管理系统)。该页面需要登录我的黑板帐户,并且我已阅读您可以使用 --data 参数来执行此操作。我不知道,我需要使用什么格式将我的用户名和密码传递给 curl 命令。
2 回答
0
我来自中山大学,我用下面的脚本登录我们学校的黑板。它使用RCurl了包。您可以在我的github中找到详细信息。
library(V8)
library(xml2)
source('../R/MainFunction.R', encoding = 'UTF-8')
url <-list(
login_netid = "https://cas.sysu.edu.cn/cas/login?service=http%3A%2F%2Felearning.ne.sysu.edu.cn%2Fwebapps%2Fbb-caszsdx-bb_bb60%2Findex.jsp",
login_origin = "http://elearning.ne.sysu.edu.cn/webapps/login/",
referer = "http://elearning.ne.sysu.edu.cn/",
userinfo = "http://elearning.ne.sysu.edu.cn/webapps/portal/execute/topframe?tab_tab_group_id=_22_1&frameSize=LARGE",
main = "http://elearning.ne.sysu.edu.cn/webapps/portal/frameset.jsp"
)
## your can also directly login using cookies from firefox or other browser
myHttpheader<- c(
"User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0",
"Accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Encoding"="gzip, deflate",
"Accept-Language" = "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"Connection"="keep-alive",
# "Cookie" = "JSESSIONID=DD1F84CD54D9831F8065A5026039A9CC.root; safedog-flow-item=AE46F7B8895D4633E2C87C0C0809A2EB; session_id=D15553506517F2E4E65E8CCD6F8F3DCA; JSESSIONID=36FBE15A073E5FACDD6DB6A61E6ADB45.root; xythosdrive=0",
DNT = 1,
"Host" = "elearning.ne.sysu.edu.cn",
# Referer = url$referer,
"Upgrade-Insecure-Requests" = 1)
h <- basicHeaderGatherer()
ch <- getCurlHandle()#带上百宝箱开始上路
tmp <- curlSetOpt(curl = ch,
cainfo="pem/cacert.pem",
ssl.verifyhost=FALSE,
ssl.verifypeer = FALSE,
followlocation = TRUE,
verbose = TRUE,
cookiejar = "cookies_elearn.txt", cookiefile = "cookies_elearn.txt",
httpheader = myHttpheader)
# login -------------------------------
tmp <- getURL(url$login_origin, curl = ch, headerfunction = h$update)
one_time_token <- read_html(tmp) %>% xml_find_all("//input[@name='one_time_token']") %>% xml_attr("value")
ct <- v8()
ct$source("blackboard.js")
pwd <- "****"
user <- "****"
encode_pws <- ct$call("kong", one_time_token, pwd)
params <- list(
action="login",
auth_type="",
encoded_pw=encode_pws[1],
encoded_pw_unicode=encode_pws[2],
login = "登陆",#iconv("登陆", "gb2312", "utf-8") %>% URLencode(),
new_loc =" ",#"%C2%A0", #" ",
one_time_token=one_time_token,
password = "",
"remote-user"="",
user_id = user)
page <- postForm(url$login_origin, .params = params, curl = ch,
# origin="http://elearning.ne.sysu.edu.cn", refere="http://elearning.ne.sysu.edu.cn/",
style="post") %T>% print
# p <- params2URL(url$login_origin, params) %>% getURL(curl = ch)
# get data ----------------------------------------------------------------
p <- getURL(url$userinfo, curl = ch)
grep("孔冬冬", p)#now you can find your name in p
于 2016-12-29T09:48:45.850 回答
0
如果您可以使用 firefox 作为浏览器,您可以让 curl 命令创建浏览器。
您需要激活开发人员工具(在 win F12 上),登录后您可以转到 POST 行,按鼠标右键并选择另存为 curl或类似的措辞。
如此处所述 https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor#Copy_as_cURL
好吧,答案是。
curl -v --data '用户名=abc124&密码=密码'
也许你可以看看这本全新的书
“一切卷曲” https://www.gitbook.com/book/bagder/everything-curl/details
在 HTTP Post 章节,或者您可以查看curl https://curl.haxx.se/docs/httpscripting.html#POST主页上的http-scripting
于 2016-09-01T23:20:14.607 回答