双極性障害システムコンサルタントのBlog

双極性障害システムコンサルタントのBlog

2020.02.18
XML
カテゴリ: プログラミング
今回は Selenium について、 JAVAで利用する際のテクニック をご紹介したいと思います。
前回はChromeDriverを使った例 でしたので、 今回はFireFoxDriver (と言っても Torを利用、理由は後ほど )を用いたいと思います。




まずは「Selenium」の FireFox用のWebDriver を​ ​ここ ​から​ダウンロードします。

FireFoxを稼働しているOS環境に併せた 最新の「 geckodriver 」という名前のドライバをダウンロードします。
※私は Windows10 の64Bit ですので、「 geckodriver-v0.26.0-win64.zip 」をダウンロードしました。



ダウンロードしたファイルを解凍し、 配置する場所を決めて格納 します。
その後JAVA上で
System.setProperty("webdriver.gecko.driver", " X:\\exe\\geckodriver.exe ");
と言った感じで、 システムプロパティにドライバの格納場所を記述 します。
日本語Windowsなので、「/」は「\\」として記載 して下さい。​


依存ライブラリ につきましては​ 前回説明しました ​ので、設定方法は割愛します。




ここから 本題の「Tor」を利用する設定 に移りたいと思います。

そもそも 何故今回「Tor」を利用するか と言いますと、WEBシステム上では​ ​ DoS攻撃 に、 同じIPアドレスから連続して同じ操作が出来ないような仕組み が多く行われています。

今回のように Seleniumを使ってブラウザアプリのテスト自動化 をした際、 同じ端末からロボットのようにブラウザ操作を繰り返すのと同様 となりますので、実はこの DoS攻撃用の制御がテストの邪魔になる 事があります。

かと言って、 テスト中はサーバ側の上記不正検知制御を外しておく という手立てもありますが、この 一時しのぎの対応をリリース前に再度修正する事を忘れる と、 ​ セキュリティホール ​ として 不正利用の温床 になる事が多くあります。(そりゃ人間が作るものですからね、テスト完璧と思っていても、ど忘れのバグなんて多くある話です。。。)


このような IPアドレスによる連続操作不正検知をかいくぐる為 に、 「​ Tor ​」というツール (この記事を書いている時点ではFireFoxベースのブラウザのようなものです)があります。

※ですので ​不正行為の為の利用は犯罪になります​ ので、 決して目的外用途で利用 しないで くださいね。​


この「 Tor Browser 」という名前の FireFoxブラウザを今回利用する事 で、 匿名性を活用してサイクルテストが行えるようにしたい と思います。



実装方法は色々ありそう なのですが、 実際に私が動作できた例 を元に説明します。
※実は FireFoxProfileクラスの設定で結構躓いた のと、 従来より読み込み速度が落ちます ので 最初の描画完了後の待機時間(Sleep時間)の調整 に手間取りました。。。


実装例は以下の通りです。​(いや~、 我ながらダサいソース です…。)
⇒ 下線部は実際にTor Browserを​ こちら ​からダウンロード・インストール して、その インストール先に併せて書き換えて下さい 。
​
String torPath = " X:\\Tor Browser\\Browser\\firefox.exe ";

String profilePath = " X:\\Tor Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default ";

File torProfileDir = new File(profilePath);
FirefoxBinary binary = new FirefoxBinary(new File(torPath));

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("network.proxy.type", 1);
profile.setPreference("extensions.torlauncher.start_tor", false);
profile.setPreference("extensions.torbutton.block_disk", false);
profile.setPreference("extensions.torbutton.custom.socks_host", "127.0.0.1");
profile.setPreference("extensions.torbutton.custom.socks_port", 9150);
profile.setPreference("extensions.torbutton.inserted_button", true);
profile.setPreference("extensions.torbutton.launch_warning", false);
profile.setPreference("privacy.spoof_english", 2);
profile.setPreference("extensions.torbutton.loglevel", 2);
profile.setPreference("extensions.torbutton.logmethod", 0);
profile.setPreference("extensions.torbutton.settings_method", "custom");
profile.setPreference("extensions.torbutton.use_privoxy", false);
profile.setPreference("extensions.torlauncher.control_port", 9251); // 9251
profile.setPreference("extensions.torlauncher.loglevel", 2);
profile.setPreference("extensions.torlauncher.logmethod", 0);
profile.setPreference("extensions.torlauncher.prompt_at_startup", false);
profile.setPreference("browser.startup.page", "0");
profile.setPreference("browser.startup.homepage", "about:newtab");
profile.setPreference("extensions.torlauncher.prompt_at_startup", 0);
profile.setPreference("webdriver.load.strategy", "normal");
profile.setPreference("app.update.enabled", false);
profile.setPreference("extensions.torbutton.versioncheck_enabled", false);
profile.setPreference("extensions.torbutton.prompted_language", true);
profile.setPreference("network.proxy.socks_port", 9150);
profile.setPreference("extensions.torbutton.socks_port", 9150);

FirefoxOptions options = new FirefoxOptions();
options.setBinary(binary);
options.setProfile(profile);
options.setCapability(FirefoxOptions.FIREFOX_OPTIONS, options);

WebDriver driver = new FirefoxDriver(options);
あとは​ 前回のChromeDriverの説明 ​同様、 Seleniumのクラスを用いて色々試すのみ となります。


一点注意事項 としましては、 Torを用いたアクセス なので コンテンツのロードに少し時間を要しますので 、 特に初回アクセス時はブラウザが描画し終わるまで少し長めのSleep設定が必要 という事だけご理解下さい。

ひょっとしたらWindowsファイヤーウオールなどでブロックが起るかも しれませんので、 それぞれの環境に併せてポートを解放 してあげてください。(今回の例でいくと「9150」ポートが対象になります。)

あとは色々とネット検索しながら、Seleniumをお試し下さい!






お気に入りの記事を「いいね!」で応援しよう

最終更新日  2020.02.18 13:44:29
コメント(0) | コメントを書く
[プログラミング] カテゴリの最新記事


■コメント

お名前
タイトル
メッセージ
画像認証
上の画像で表示されている数字を入力して下さい。


利用規約 に同意してコメントを
※コメントに関するよくある質問は、 こちら をご確認ください。


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

PR

×

サイド自由欄


カレンダー

コメント新着

コメントに書き込みはありません。

バックナンバー

2026.10
2026.09
2026.08
2026.07
2026.06

キーワードサーチ

▼キーワード検索


© Rakuten Group, Inc.
Design a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: