事情是这样的:
昨天要模拟请求去登录路由器,结果使用无论是使用Go模拟请求,还是curl发送请求,都无法获得想要的resp,但是使用ApiFox发送请求却可以拿到正确的resp,之后即使使用ApiFox或者是Postman生成的代码模拟请求依然无法获得正确resp。
今天来了之后,请教了前辈,前辈研究了一个小时发现正常访问这个链接时会被重定向到另外一个链接,并且直接返回200,而不是302,需要手动禁止
func main() {
url := ""
method := "POST"
payload := &bytes.Buffer{}
writer := multipart.NewWriter(payload)
_ = writer.WriteField("password", "MTIzNDU2")
err := writer.Close()
if err != nil {
fmt.Println(err)
return
}
//此处禁止重定向
client := &http.Client{
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse /* 不进入重定向 */
},
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Set("Content-Type", writer.FormDataContentType())
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}