###前提・実現したいこと
surfでクローラーを作成しています。
あるログインページのセッションをファイルに保存して次回のクッキーに設定してログイン情報を更新したいと思っていますがうまくいきません。
go version go1.6.2 windows/amd64
###該当のソースコード
import (
pcookiejar "github.com/CreditTone/persistent-cookiejar"
"github.com/headzoo/surf"
"github.com/headzoo/surf/browser"
"net/http/cookiejar"
)
func main() {
somepage := NewPage()
Login(somepage, "loginid", "password")
bow := somepage.Browser
bow.Open("http://somepage.com/otherpage")
}
func NewPage() *Page {
bow := surf.NewBrowser()
page := Page{bow}
return &page
}
type Page struct {
Browser *browser.Browser
}
func Login(bow *browser.Browser, loginid string, password string) (err error) {
err = ContinueLastLogin(bow, loginid)
if password != "" && err != nil {
err = LoginNormal(bow, loginid, password)
}
return
}
func LoginNormal(bow *browser.Browser, loginid string, password string) (err error) {
err = bow.Open("http://somepage.com/")
if err != nil {
return err
}
// ログインボタン クリック err = bow.Click(LoginExpr) if err != nil { return err } // ログインフォーム 設定 fm, _ := bow.Form(LoginFormExpr) fm.Input("login", loginid) fm.Input("passwd", password) fm.Submit() // クッキー情報の保存 err = saveCookieJar(bow, loginid) return err
}
func ContinueLastLogin(bow *browser.Browser, loginid string) (err error) {
return setCookieJar(bow, loginid)
}
func setCookieJar(bow *browser.Browser, loginid string) (err error) {
cookiejarBuf, err := pcookiejar.New(nil)
if err != nil {
return err
}
cookiejarBuf.Load(CookieInfoFilePath) httpCookieJarBuf, err := cookiejar.New(nil) if err != nil { return err } httpCookieJarBuf.SetCookies(bow.Url(), cookiejarBuf.Cookies(bow.Url())) bow.SetCookieJar(httpCookieJarBuf) return
}
LoginNormalだとログインできてクッキー情報も保存できるのですがContinueLastLoginでクッキー情報は設定できるのですがOpenすると消えてしまいます。
どなたかご教示頂ければ助かります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。