我无法通过Golang发送发帖请求吗?

时间:2019-07-15 13:57:37

标签: go

VBA代码效果很好

Set oFields = CreateObject("Scripting.Dictionary")
With oFields
    .Add "dor_user", "51"
    .Add "login", "nvivc"
    .Add "pass", "51256"
End With
For Each sName In oFields
    oFields(sName) = sName & "=" & EncodeUriComponent(oFields(sName))
Next
sPayLoad = Join(oFields.Items(), "&")
With CreateObject("MSXML2.XMLHTTP")
    .Open "POST", "http://kasant.gvc.oao.rzd:8888/kasant/login?", False
    .setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    .setRequestHeader "Content-Length", LenB(sPayLoad)
    .Send (sPayLoad)
    Do While .readyState <> 4
        DoEvents
    Loop
End With

登录成功 过滤器

  

POST http://kasant.gvc.oao.rzd:8888/kasant/login? HTTP / 1.1

     

接受: /

     

Content-Type:应用程序/ x-www-form-urlencoded

     

接受语言:ru,en-US; q = 0.7,en; q = 0.3

     

UA-CPU:AMD64

     

接受编码:gzip,放气

     

User-Agent:Mozilla / 4.0(compatible; MSIE 7.0; Windows NT 10.0; Win64;   x64;三叉戟/7.0; .NET4.0C; .NET4.0E)

     

主持人:kasant.gvc.oao.rzd:8888

     

内容长度:34

     

连接:保持活动

     

编译指示:无缓存

     

Cookie:dor_user =“”; kasant_pass =“”; kasant_user =“”;   kasant_pass_save = false;   JSESSIONID = 0000VSeSKuzaru0vpwzeeSQF29Y:1ak0n0hlm

     

dor_user = 51&login = nvivc&pass = 51256

JSESSIONID = 0000VSeSKuzaru0vpwzeeSQF29Y:1ak0n0hlm

代码Golang

urlLogin := "http://kasant.gvc.oao.rzd:8888/kasant/login?"
formData := url.Values{
    "dor_user": {"51"},
    "login":    {"nvivc"},
    "pass":     {"51256"},
}
client := &http.Client{}
req, _ := http.NewRequest("POST", urlLogin, bytes.NewBufferString(formData.Encode()))
req.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E)")
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
resp, _ := client.Do(req)
defer resp.Body.Close()

FIDDLER

  

POST http://kasant.gvc.oao.rzd:8888/kasant/login? HTTP / 1.1主机:

     

kasant.gvc.oao.rzd:8888用户代理:Mozilla / 4.0(兼容; MSIE 7.0;

     

Windows NT 10.0; WOW64;三叉戟/7.0; .NET4.0C; .NET4.0E)

     

内容长度:34内容类型:application / x-www-form-urlencoded

     

接受编码:gzip

     

dor_user = 51&login = nvivc&pass = 51256

缺少cookie和 JSESSIONID 。登录失败!!! 告诉我这是什么错误?

1 个答案:

答案 0 :(得分:0)

感谢@Peter

urlLogin := "http://kasant.gvc.oao.rzd:8888/kasant/login?"
formData := url.Values{
    "dor_user": {"51"},
    "login":    {"nvivc"},
    "pass":     {"51256"},
}
cookieJar, _ := cookiejar.New(nil)
client := &http.Client{
    Jar: cookieJar,
}
respp, _ := client.Post(urlLogin, "application/x-www-form-urlencoded", bytes.NewBufferString(formData.Encode()))
defer respp.Body.Close()
相关问题