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

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

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

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

9327閲覧

Seleniumでクッキーを使いたい

yuki_90453

総合スコア326

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

1クリップ

投稿2017/02/02 14:18

編集2017/02/03 13:49

###やりたい事
SeleniumとPhantomJSでクッキーを使いログイン画面を省略したいと考えています。

###直面している問題
問題は2つあり。

  1. 出力されるクッキーが複数あり、どれがログイン情報を格納しているかわかりません。
  2. 複数のcookieを読み込んだ状態でアクセスしたいのですが、失敗してしまいます。

対象のクッキーのサンプル

[{:name=>"s_sess", :value=>"", :path=>"/", :domain=>".test.co.jp", :expires=>nil, :secure=>false}, {:name=>"friedrice", :value=>"", :path=>"/", :domain=>".example.co.jp", :expires=>#<DateTime: 2017-01-30T13:58:44+00:00 ((2457784j,50324s,46n),+0s,2299161j)>, :secure=>true}, {:name=>"s_pers", :value=>"", :path=>"/", :domain=>".test.co.jp", :expires=>#<DateTime: 2022-01-28T13:58:41+00:00 ((2459608j,50321s,999999892n),+0s,2299161j)>, :secure=>false}, {:name=>"riceball", :value=>"", :path=>"/", :domain=>"mainmenu.example.co.jp", :expires=>nil, :secure=>true}, {:name=>"shop", :value=>"", :path=>"/", :domain=>".example.co.jp", :expires=>nil, :secure=>true}, {:name=>"sesame", :value=>"", :path=>"/", :domain=>".example.co.jp", :expires=>#<DateTime: 2017-01-30T13:58:40+00:00 ((2457784j,50320s,999999973n),+0s,2299161j)>, :secure=>true}, {:name=>"ginger", :value=>"", :path=>"/", :domain=>".example.co.jp", :expires=>nil, :secure=>true}]

対象のコード

get "mainmenu.example.co.jp" $selenium.manage.add_cookie([{:name=>"s_sess", :value=>"", :path=>"/", :domain=>".test.co.jp", :expires=>nil, :secure=>false}, {:name=>"friedrice", :value=>"", :path=>"/", :domain=>".example.co.jp", :expires=>#<DateTime: 2017-01-30T13:58:44+00:00 ((2457784j,50324s,46n),+0s,2299161j)>, :secure=>true}, {:name=>"s_pers", :value=>"", :path=>"/", :domain=>".test.co.jp", :expires=>#<DateTime: 2022-01-28T13:58:41+00:00 ((2459608j,50321s,999999892n),+0s,2299161j)>, :secure=>false}, {:name=>"riceball", :value=>"", :path=>"/", :domain=>"mainmenu.example.co.jp", :expires=>nil, :secure=>true}, {:name=>"shop", :value=>"", :path=>"/", :domain=>".example.co.jp", :expires=>nil, :secure=>true}, {:name=>"sesame", :value=>"", :path=>"/", :domain=>".example.co.jp", :expires=>#<DateTime: 2017-01-30T13:58:40+00:00 ((2457784j,50320s,999999973n),+0s,2299161j)>, :secure=>true}, {:name=>"ginger", :value=>"", :path=>"/", :domain=>".example.co.jp", :expires=>nil, :secure=>true}]) get "mainmenu.example.co.jp/aaaaa.html" screenshot

###備考
環境
Ruby
Selenium
PhantomJS

クライアント
アクセス先はIDとPWを入力する部分が2つあります。

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

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

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

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

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

guest

回答1

0

ベストアンサー

クッキーによるログイン管理に関しては、
基本的にIDやパスワードの文字列は絶対に持ちません。
クラッカーに抜かれた時点で大事になりますからね。

なので、今だけ使える一時的なログイン情報セションIDというものを新規に発行して管理しています。
具体名はシステム毎に変わるので推測するしかないのですが、SIDとかSESS等のクッキー名が怪しいですね。
このことから「s_sess」が該当するんじゃないかと思います。

また、セッションを管理しているクッキーは大抵ログインする沢山のユーザーを捌く為に半角英数字の32文字くらいのハッシュ値です。
クッキーの実体をテキストエディタかなにかで開いて、意味のなさそうな英数字の羅列を探しましょう。
これで更に絞り込むことが出来るかと思います。

他にも、クッキーは設定されたドメインでしか使えないのでdomainがシステムと一致するものだけ抜き出しましょう。
また、クッキーには制限時間もあるので、ログインを行ってクッキーを持ち帰ることに特化したコマンドも必要です。

投稿2017/02/04 02:16

miyabi-sun

総合スコア21158

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

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

yuki_90453

2017/02/04 06:09 編集

ご返事ありがとうございます。 >なので、今だけ使える一時的なログイン情報セションIDというものを新規に発行して管理しています。 >具体名はシステム毎に変わるので推測するしかないのですが、SIDとかSESS等のクッキー名が怪しいですね。 >このことから「s_sess」が該当するんじゃないかと思います。 確かにログイン情報をそのままCookieに保存すると危ないですね。 ログインしたいドメインと「s_sess」で設定されているドメインは異なります。 このCookieの値の半角文字数は54文字でした。 ドメインが一致するCookieは下記になります。 $selenium.manage.add_cookie({:name=>'riceball', :value=>'', :path=>'/', :secure=>true, :expires=>nil, :domain=>'mainmenu.example.co.jp'}) このドメインを設定しアクセスすると「Unable to set Cookie」と返されます。 下記のURLに似た内容の質問があり、解決策として「先に対象ドメインにアクセスし、その後Cookieを設定する」という物でした。 https://teratail.com/questions/54008 下記のように先にドメインにアクセスしその後、Cookieを設定するという風に設定したのですが、結果は変わりませんでした。 get "http://mainmenu.example.co.jp" $selenium.manage.add_cookie({:name=>'riceball', :value=>'', :path=>'/', :secure=>true, :expires=>nil, :domain=>'mainmenu.example.co.jp'})
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問