質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

Q&A

1回答

2511閲覧

Golang surf(clowler)のクッキー(cookie)設定について

JUNJUNJUN

総合スコア25

Cookie

HTTPにおけるCookieとは、クライアントのウェブブラウザ上に保存された一時的なデータを指します。クライアント側のJavaScriptでも、サーバー側のHTTPヘッダーでもクッキーの読み書き・修正・削除が可能です。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

HTTPヘッダー

Hypertext Transfer Protocol(HTTP)の中のHTTPヘッダフィールドはHTTPの要求やレスポンスの機能しているパラメーターが含まれます。その要求もしくはレスポンスライン(メッセージの最初の一行)でメッセージヘッダを作ります。

0グッド

0クリップ

投稿2016/07/08 00:25

###前提・実現したいこと
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すると消えてしまいます。
どなたかご教示頂ければ助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

もう解決済みかもしれませんが、cookiejarBuf.Load のエラーがチェックされていない様ですが、エラーが起きていたりしないでしょうか。

投稿2017/06/23 11:12

mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問