0

我正在尝试在黑板上卷曲页面(一种流行的大学课程管理系统)。该页面需要登录我的黑板帐户,并且我已阅读您可以使用 --data 参数来执行此操作。我不知道,我需要使用什么格式将我的用户名和密码传递给 curl 命令。

4

2 回答 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 回答