登录的初始网址为:http://jwxt.wit.edu.cn/jsxsd/
这里我们先对这个网址发送GET请求
urlLogin1 := "http://jwxt.wit.edu.cn/jsxsd/"
method := "GET"
clientLogin1 := &http.Client{}
reqLogin1, err := http.NewRequest(method, urlLogin1, nil)
if err != nil {
fmt.Println(err)
return ""
}
resLogin1, err := clientLogin1.Do(reqLogin1)
if err != nil {
fmt.Println(err)
return ""
}
defer resLogin1.Body.Close()
cookie := resLogin1.Cookies()
本次发起请求第一次获取登录cookie
通过fidder抓包得知实际表单提交的数据网址为:http://jwxt.wit.edu.cn/jsxsd/xk/LoginToXk
并且通过username和password的base64编码拼接形成encoded
使用golang语言提供的base64加密包对提交数据进行加密
encodeduser := base64.StdEncoding.EncodeToString([]byte(username))
encodedpass := base64.StdEncoding.EncodeToString([]byte(password))
encoded := encodeduser + "%%%" + encodedpass
得到提交的加密数据,并向网址发送登录请求,并添加初次获取的cookie使之生效
reqLogin2, err := http.NewRequest("POST", urlLogin2, payload)
if err != nil {
fmt.Println(err)
return ""
}
reqLogin2.Header.Add("Content-Type", "application/x-www-form-urlencoded")
reqLogin2.Header.Add("Cookie", cookies)
成功模拟登录。