2011-01-21 6 views
2

Watir(ルビー)を使って特定のウェブ検索をクロールするスクリーンスクレイピングロボットを開発しています。 検索結果がページで配信されるためWatirが使用され、AJAXリクエストでのみ利用可能です。リクエストごとにFirefoxでセッションをクリアする(Watirの問題)

新しい検索を実行するには、ブラウザをシャットダウンして検索セッションをクリアする必要があります。それ以外の場合は、最初の検索でGETパラメータの変更が無効になります。

Firefoxはすべての要求に対してセッションをクリアするように強制できますか?

また、誰もWatirを通じてこれらの問題を解決した経験がありますか?

ありがとうございました!

答えて

1

行われたすべての 要求にセッションをクリアする のFirefoxを強制することは何とか可能ですか?

ご要望があればブラウザの開始を意味すると思いますか?

クッキーの問題を回避するには、2つの良い方法があります。

(1) "ポルノモード" を使用します

  • についての検索バーのタイプで:コンフィグ
  • タイプbrowser.privatebrowsingをフィルタフィールドの.autostart
  • 上記の値をダブルクリックし、Trueに設定します。
  • 次回にFirefoxを開くと、プライベートモードになります!

"-private"コマンドラインフラグもあります。ここで説明するように

(2)あなたが並行して複数のインスタンスを実行したい場合(!我々は50+を実行)は異なるFirefoxがプロファイルを使用します。

1 + 2を組み合わせて使用​​するとうまくいきます。

また、誰もが 経験がない、申し訳ありませんワチール

経由 問題のこれらの種類を解決していません。私が言うことができるのは、私たちがFirefox用にiMacrosを使用し、Firefoxでこのような「GET」問題を経験したことがないことです。

0

Firefoxのブラウザでセッションがクッキーによって維持されている場合は、それが可能です。

すべては、起動前にFirefoxのCookieリポジトリからCookieを削除する必要があります。 Firefoxは

~/.mozilla/firefox/12wwonrk.default/cookies.sqlite [in ubuntu] 

または

~/Library/Application Support/Firefox/Profiles/eox4ghka.default/cookies.sqlite [in mac] 

(Firefox 3の前ではなくsqliteのcookies.txtた)(私のUbuntuとMacでのように)あなたは切り捨てることができる場合にそのクッキーを保存しますsqlite(またはtxt)を実行すると、クッキーはもう存在しなくなります。

あなたがWatirを実行しているとき、あなたはおそらくルビーを使用しています。したがって、Watir :: Browser.newステートメントの前に、システムまたは%x [](またはsqlite gem/libを使用して互換性のあるコマンド)でこれらのコマンドを実行することができれば、うまくいきます。

./sqlite3 path/to/cookies.sqlite 
DELETE FROM moz_cookies; 
.quit 
0

Watirを使用する場合は、http://watirwebdriver.com/で説明されているようにプロファイルを混乱させることができます。ほとんどのブラウザはデフォルトで新しいインスタンスごとに独自のプロファイルを取得するようです。

関連する問題