模拟浏览器登录操作

GiXuan · · 303614 次点击
主题的内容,下面代码实现了两个功能: 1、始终使用自定义的浏览器标识。 2、每次请求中,发送和接收Cookie。 ```go import ( "net/http" "net/http/cookiejar" "net/url" ) type MyTransport struct { Transport 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) } var c Client type Client { http.Client } func NewClient() *Client { t := &MyTransport{} jar, err := cookiejar.New(nil) if nil != err { log.Fatal(err) } return &Client{ Transort: t, Jar: jar } } func main() { c = NewClient() // sUrl 是登录验证页面地址 sUrl := "http://localhost/login" // v中是登录帐号、密码等内容 v := url.Values{ "username": "test", "password": "test", } req, err := http.NewRequest("POST", sUrl, v) // 执行登录操作 res, err := c.Do(req) if nil != err { log.Fatal(err) } } ```
#6
更多评论
编辑了半天,代码高亮还是没出来,不知道怎么用。
#1
polaris
社区,需要你我一同完善!
额,好吧。需要在 ``` 后面加上 go
#2