分享
golang post用户名密码登陆的巨坑
benming · · 4745 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
- http的Header设置,按照官网或者大部分文章的设置来就可以,如下:
client := &http.Client{Transport: nil}
req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(string(info)))
if err != nil {
panic(err)
}
//header
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36")
req.Header.Set("Content-Type", "application/json;charset=UTF-8")
- golang的http form data数据设置,golang.com官网的例子和网上大部分的文章使用url.Values最后提交的时候数据不能到达后台。 最后实在没办法,通过http client的transparent结合charles抓包,仔细对比网页直接请求和go请求的差异才把问题解决。 请求的form表单数据是一段json数据,而url.Values不行
- 错误的情况
postValues := url.Values{}
postValues.Add("expire", "7")
postValues.Add("referer", "http%3A%2F%2Fwww.jikexueyuan.com%2F")
postValues.Add("uname", username)
postValues.Add("password", password)
postValues.Add("verify", verify_code)
req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(postValue.Encode()))
- 正确的姿势
loginInfo := LoginInfo{
Username: username,
Password: password,
LoginYzm: "",
}
info, err := json.Marshal(loginInfo)
req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(string(info)))
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信4745 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
- http的Header设置,按照官网或者大部分文章的设置来就可以,如下:
client := &http.Client{Transport: nil}
req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(string(info)))
if err != nil {
panic(err)
}
//header
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36")
req.Header.Set("Content-Type", "application/json;charset=UTF-8")
- golang的http form data数据设置,golang.com官网的例子和网上大部分的文章使用url.Values最后提交的时候数据不能到达后台。 最后实在没办法,通过http client的transparent结合charles抓包,仔细对比网页直接请求和go请求的差异才把问题解决。 请求的form表单数据是一段json数据,而url.Values不行
- 错误的情况
postValues := url.Values{}
postValues.Add("expire", "7")
postValues.Add("referer", "http%3A%2F%2Fwww.jikexueyuan.com%2F")
postValues.Add("uname", username)
postValues.Add("password", password)
postValues.Add("verify", verify_code)
req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(postValue.Encode()))
- 正确的姿势
loginInfo := LoginInfo{
Username: username,
Password: password,
LoginYzm: "",
}
info, err := json.Marshal(loginInfo)
req, err := http.NewRequest("POST", post_login_info_url, strings.NewReader(string(info)))