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 のホームページでhttp-scriptingを調べることができますhttps://curl.haxx.se/docs/httpscripting.html#POST

于 2016-09-01T23:20:14.607 に答える