浏览器是没有状态的,浏览器只有cookie,session在客户端也是cookie。如果想让机器人记住帐号/密码实现自动登陆,问题就演化为让其记住cookie。
记住cookie在golang中是极简单的。
最近我们写运营机器人,有一个兄弟实现了微信帐号的自动登陆,简单翻了翻源码,发现是使用cookiejar实现的。
cookiejar:the net/http/cookiejar package provides a cookiejar implementation.
cookiejar在golang源码中极其简单:
type cookiejar interface {
//设置cookie setcookies(u *url.url, cookies []*cookie)
//取cookie cookies(u *url.url) []*cookie}
核心代码:
wechat.baseurl = cached[`baseurl`].(string)
wechat.baserequest = cached[`baserequest`].(*baserequest)
cookies := cached[`cookies`].([]*http.cookie)
u, ue := url.parse(wechat.baseurl)
if ue != nil {
return ue
}
wechat.client.jar.setcookies(u, cookies)
其中cached是从硬盘上读取的json序列数据,cached[`cookies`]是先前登陆之后写进的缓存。而wechat.client是一个标准的http.client:
type wechat struct {
client *http.client
}
在一个程序周期内重复使用同一个http.client,或者将cookie写进硬盘或数据库,下次重启的时候复用。以此便实现了帐号的自动登陆。
以上就是小程序开发之如何使用cookiejar记住帐号的详细内容。