010958 ランダム
 ホーム | 日記 | プロフィール 【フォローする】 【ログイン】

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

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

【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
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("network.proxy.socks", "127.0.0.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) | コメントを書く
[プログラミング] カテゴリの最新記事


PR

サイド自由欄


楽天カード

カレンダー

コメント新着

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

バックナンバー

2024.11
2024.10
2024.09
2024.08
2024.07

カテゴリ

日記/記事の投稿

ニューストピックス

キーワードサーチ

▼キーワード検索


© Rakuten Group, Inc.
X