黒板 (大学で一般的なコース管理システム) でページをカールさせようとしています。このページには私の黒板アカウントへのログインが必要ですが、 --data 引数を使用してこれを行うことができると読みました。私が知らないのは、ユーザー名とパスワードをcurlコマンドに渡すために使用する必要がある形式です。
2 に答える
私は中山大学出身で、学校の黒板に以下のスクリプトでログインしています。中古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
ブラウザとして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 のホームページでhttp-scriptingを調べることができますhttps://curl.haxx.se/docs/httpscripting.html#POST