golang 模拟浏览器登录操作
package main
import (
"io/ioutil"
"log"
"net/http"
"net/http/cookiejar"
)
type MyTransport struct {
Transport http.RoundTripper
}
func (t *MyTransport) transport() http.RoundTripper {
if nil != t.Transport {
return t.Transport
}
return http.DefaultTransport
}
func (t *MyTransport) RoundTrip(req *http.Request) (*http.Response, error) {
req.Header.Set("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)")
return t.transport().RoundTrip(req)
}
func NewClient() *http.Client {
t := &MyTransport{}
jar, err := cookiejar.New(nil)
if nil != err {
log.Fatal(err)
}
client := http.DefaultClient
client.Transport = t
client.Jar = jar
return client
}
func main() {
c := NewClient()
// sUrl 是登录验证页面地址
sUrl := "http://localhost/login"
req, err := http.NewRequest("POST", sUrl, nil)
// 执行登录操作
res, err := c.Do(req)
if nil != err {
log.Fatal(err)
}
ioutil.ReadAll(res.Body)
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
by JeffreyBool blog :point_right: link
推荐文章: