Go模拟浏览器登录操作代码

本文介绍了一个使用Go语言实现的HTTP客户端登录流程。通过创建自定义的传输层来设置请求头,模仿浏览器行为,并利用cookiejar进行会话管理,实现向指定URL发送包含用户名和密码的POST请求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import (
    "net/http" 
    "net/http/cookiejar"
    "net/url"
    "log"
)

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)
}

type Client {
    http.Client
}

var c 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)
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值