关于模拟登陆的一些问题

xiaohaoxiong · 2017-05-10 07:29:25 · 2009 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-05-10 07:29:25 的主题,其中的信息可能已经有所发展或是发生改变。

const ( entry_login_url string ="xxxx " )

     c:=&http.Client{
        CheckRedirect: func(req *http.Request, via []*http.Request) error {
            return http.ErrUseLastResponse
        },
    }
req,_:=http.NewRequest("GET",entry_login_url,nil)
res,_:=c.Do(req)


url1:=res.Header.Get("Location")
req1,_:=http.NewRequest("POST",url1,nil)
res1,_:=c.Do(req1)
temp_cookies:=res1.Cookies()

res1.Header.Set("Referer","xxxxxxl")

elu,_:=c.Get(url1)
doc,_:=goquery.NewDocumentFromReader(elu.Body)
ltnode:=doc.Find(`[name="lt"]`)
lt,_:=ltnode.Attr("value")
excnode:=doc.Find(`[name="execution"]`)
execution,_:=excnode.Attr("value")


postValues :=url.Values{}

//postValues.Add("service","http://entry.ccsu.cn")
postValues.Add("username","xxxx")
postValues.Add("password","xxxx")
postValues.Add("lt",lt)
postValues.Add("dllt","userNamePasswordLogin")
postValues.Add("execution",execution)
postValues.Add("_eventId","submit")
postValues.Add("rmShown","1")


postURL,_:=url.Parse(url1)
Jar,_:=cookiejar.New(nil)

Jar.SetCookies(postURL,temp_cookies)
c.Jar=Jar
res2,err:=c.PostForm(url1,postValues)

fmt.Println(temp_cookies,res2,err)

如图 是我用 fiddler抓的数据 1.png

2.png

3.png

4.png

以上唯一没有post的数据是querystring中的那个地址 还有 cookie中的第一个cookie 因为我不知道如何设置 通过res1.cookie()只能获取一个 JSESSIONID_IDS1 而前面的不能获取 我也尝试过 手动加入第一个 (因为第一个是不变的,不知道那个网站后台是不是仅仅用一个作为标识)然后 jar.setcookie两次 也没有用 先不考虑重定向问题,只想看看post的数据哪里出毛病了 因为总是post不上 是不是上面的两个的问题 ,新手也不是非常懂 希望有能人来指点指点 实在是卡了太久


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2009 次点击  
加入收藏 微博
1 回复  |  直到 2017-07-29 05:15:17
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传