Watir(Ruby)でプロキシを設定し、回転させる方法
Expert Network Defense Engineer
Scrapelessの信頼できるプロキシソリューションを利用して、Watirベースのウェブスクレイピングがブロックされず、スケーラブルであることを確認してください。
重要なポイント
- Watir(RubyでのWebアプリケーションテスト)は、ウェブ自動化およびスクレイピングのための強力なツールです。
- プロキシは、WatirでIPアドレスを隠し、アンチボットシステムがスクレイパーをブロックするのを防ぐために不可欠です。
Watir::Browserインスタンスを初期化するときに、プロキシを直接設定できます。- 複数のリクエストを送信する際に禁止されないようにするために、シンプルなランダムプロキシロテーターをRubyで実装する必要があります。
- 大規模かつ信頼性の高いスクレイピングには、複雑な回転とIPヘルスチェックを自動的に処理するプレミアムサービスであるScrapeless Proxyが推奨されます。
Watir(Ruby)でのプロキシの設定とローテーション
Watir(RubyでのWebアプリケーションテスト)は、Selenium WebDriver [1] の上に構築されたオープンソースのRubyライブラリのファミリーで、ウェブブラウザの自動化用に設計されています。これは、Rubyでのウェブスクレイピングに非常に効果的なツールですが、他の自動化ツールと同様に、アンチボット対策を施したウェブサイトにブロックされる可能性があります。
このチュートリアルでは、検出と禁止を回避するためにWatirでプロキシを設定し、ウェブスクレイピング操作を中断なく実行できるようにするための基本的な手順を学びます。
Watirで単一プロキシを設定する
まず、Watir gemをインストールする必要があります:
bash
gem install watir
次に、基本的なスクリプトを作成します。ヘッドレスモードで新しいChromeブラウザインスタンスを初期化し、クライアントのIPアドレスを返すサービスであるHTTPBin [2] に移動します。
scraper.rb
ruby
require 'watir'
# ブラウザを初期化
browser = Watir::Browser.new :chrome, headless: true
# URLに移動
url = 'https://httpbin.io/ip'
browser.goto(url)
# ページ内容を取得
page_content = browser.text
puts page_content
# ブラウザを閉じる
browser.close
このスクリプトを実行すると、マシンの実際のIPアドレスが表示されます。これは、即座にブロックされる危険があるため、ウェブスクレイピングには不適切です。リクエストを隠すためには、プロキシを統合する必要があります。
プロキシの統合
プロキシを使用するには、プロキシ設定を定義してブラウザの初期化時に渡す必要があります。優れたプロキシプロバイダのリストからプロキシを見つけることができます。
プロキシ設定を定義します(例示のIPとポートは自分のものに置き換えてください):
scraper.rb
ruby
# ...
# プロキシを定義
proxy = {
http: '8.219.97.248:80',
ssl: '8.219.97.248:80'
}
# プロキシ設定でブラウザを初期化
browser = Watir::Browser.new :chrome, headless: true, proxy: proxy
# ...
単一プロキシを使用するための完全なコードは次のようになります:
scraper.rb
ruby
require 'watir'
# プロキシを定義
proxy = {
http: '8.219.97.248:80',
ssl: '8.219.97.248:80'
}
# ブラウザを初期化
browser = Watir::Browser.new :chrome, headless: true, proxy: proxy
# URLに移動
url = 'http://httpbin.io/ip'
browser.goto(url)
# ページ内容を取得
page_content = browser.text
puts page_content
# ブラウザを閉じる
browser.close
出力は、プロキシサーバーのIPアドレスを反映し、元のIPを成功裏に隠します。
Watirにローテーションプロキシを追加する
単一プロキシを使用することは一時的な解決策に過ぎません。1つのIPアドレスから複数のリクエストを行った場合、それでも活動が検出されてブロックされます。ローテーションプロキシは、複数のIPアドレスにリクエストを分散させるために必要であり、スクレイパーの耐障害性を大幅に向上させます。
まず、一連のプロキシを定義し、Selenium WebDriverのロガーを設定してログノイズを減らします:
scraper.rb
ruby
require 'watir'
require 'logger'
# プロキシのリスト(自分のリストに置き換える)
proxies = [
{ http: '8.219.97.248:80', ssl: '8.219.97.248:80' },
{ http: '20.235.159.154:80', ssl: '20.235.159.154:80' },
{ http: '18.188.32.159:3128', ssl: '18.188.32.159:3128' },
]
# Selenium WebDriverのロガーを設定
logger = Selenium::WebDriver.logger
logger.ignore(:jwp_caps, :logger_info)
次に、リストからランダムにプロキシを選択する関数を定義します:
scraper.rb
ruby
# ...
# プロキシをローテーションする関数
以下の英語のテキストを日本語に翻訳します:
ruby
def get_rotating_proxy(proxies)
proxies.sample
end
# ...
最後に、堅牢なエラーハンドリングとクリーンアップのために、begin / rescue / ensure ブロックを使用してスクリプトに回転ロジックを統合します:
scraper.rb
ruby
# ...
begin
# ランダムに選択されたプロキシでブラウザを初期化
proxy = get_rotating_proxy(proxies)
logger.info("使用しているプロキシ: #{proxy}")
browser = Watir::Browser.new :chrome, headless: true, proxy: proxy
# URLに移動
url = 'https://httpbin.io/ip'
browser.goto(url)
# ページコンテンツを取得
page_content = browser.text
puts page_content
rescue => e
# エラーを処理
logger.error("エラーが発生しました: #{e.message}")
ensure
# ブラウザを閉じる
browser.close
end
この構造でコードをラッピングすることによって、各実行のために異なるプロキシが使用され、エラーが発生してもブラウザが常に閉じられることを保証します。これは信頼できるスクレイパーを構築するための基本的なステップです。
Scrapeless Proxyによる自動プロキシ回転
無料プロキシのリストを使用した手動回転は良い出発点ですが、プロフェッショナルまたは大規模なウェブスクレイピングには実用的な解決策ではありません。無料プロキシは遅く、信頼性が低く、すぐに使用不能になります。Instagramフォロワーデータをスクレイプするや、B2Bリード生成ワークフローを実行するなどの高ボリュームのタスクには、プロキシ管理の複雑さを自動的に処理するプレミアムサービスが必要です。
Scrapeless Proxyは、Watirの自動化に最適な高性能の自動ソリューションを提供します。個々のプロキシのリストを管理する代わりに、すべてのリクエストを単一の認証済みScrapelessエンドポイントを通じてルーティングします。サービスはさらに、回転する住宅およびISPのIPの膨大なプールを管理し、自動的に回転、再試行、IPの健康チェックを行って、ほぼ完璧な成功率を確保します。
このアプローチにより、基盤となるプロキシインフラストラクチャが堅牢で信頼できることを知りながら、Watir自動化ロジックに集中することができます。
ScrapelessがWatirに最適なプロキシである理由
- 自動回転: ScrapelessはすべてのIP回転を処理し、上記の手動Rubyロジックを削除します。
- 高い成功率: 9000万以上の住宅IPの膨大なプールを活用することで、Scrapelessはリクエストがブロックをバイパスすることを保証します。
- 簡素化された統合: 単一の認証済みエンドポイントを使用してWatirスクリプトと統合し、コードをクリーンで堅牢にします。
- データに集中: プロキシの問題をデバッグするのではなく、データ抽出に時間を捧げることができます。
Scrapelessの住宅ネットワークの信頼性とスピードをテストするために、今日無料トライアルを開始できます:
ScrapelessとWatirの統合
Scrapelessのようなプレミアムサービスを使用する際は、認証情報を含める必要があります。これはプロキシ文字列内に資格情報を渡すことで行います。
ruby
# 実際のScrapelessの認証情報で置き換えます
PROXY_HOST = 'gate.scrapeless.com'
PROXY_PORT = 8000
PROXY_USER = 'your_username'
PROXY_PASS = 'your_password'
# 認証されたプロキシ文字列を定義
auth_proxy = "#{PROXY_USER}:#{PROXY_PASS}@#{PROXY_HOST}:#{PROXY_PORT}"
# プロキシ設定を定義
proxy = {
http: auth_proxy,
ssl: auth_proxy
}
# 認証されたプロキシでブラウザを初期化
browser = Watir::Browser.new :chrome, headless: true, proxy: proxy
# ... あなたのWatir自動化コード
プレミアムプロバイダーを使用することで、回転や健康チェックを自動的に処理する信頼性の高い高品質のプロキシにアクセスでき、あなたのWatirスクレイパーは中断なしに規模で実行できます。これは成功したデータ抽出のための重要な要素です。
結論
プロキシをWatirで設定することは、ボット対策を回避するために不可欠なシンプルなプロセスです。手動での回転も可能ですが、Rubyでの本格的なウェブスクレイピングに最も堅牢でスケーラブルなソリューションは、Scrapeless Proxyのような自動化されたプレミアムプロキシサービスを利用することです。これにより、Watirスクリプトは回転する高品質なIPの膨大なプールを活用でき、高い成功率を確保し、データ抽出という核心のタスクに集中することができます。
よくある質問 (FAQ)
Watirとは何ですか?
Watirは、Rubyのウェブアプリケーションテストの略で、ウェブブラウザを自動化するためのオープンソースのRubyライブラリのファミリーです。ユーザーがウェブページと対話するのと同じ方法でスクリプトを記述できるため、テストやウェブスクレイピングの両方で人気があります。
Watirスクレイピングにはなぜプロキシが必要ですか?
プロキシは、コンピュータの本当のIPアドレスを隠すために必要です。Watirスクリプトが高いリクエスト数を送信すると、ターゲットウェブサイトのボット対策システムは、単一のIPからの異常なトラフィックパターンを検出し、それをブロックします。特に回転式のプロキシは、リクエストを多くの異なるユーザーから来ているように見せることで、これを防ぎます。
無料プロキシをWatirで使用できますか?
使用できますが、真剣なプロジェクトには強く推奨されません。無料プロキシは通常遅く、不安定で、稼働時間が限られており、多くの場合、主要なウェブサイトですでにブラックリストに載っています。基本的なテストや学習目的には適していますが、生産用にはScrapelessのようなプレミアムサービスを使用するべきです。
Watirはプロキシ認証をサポートしていますか?
はい、Watirはプロキシ認証をサポートしています。統合の例に示されているように、Watir::Browserインスタンスのプロキシ設定を定義する際に、プロキシ文字列にユーザー名とパスワードを直接含めることができます。
WatirはRubyにおいてSeleniumより優れていますか?
WatirはSelenium WebDriverの上に構築されており、クリーンで表現力豊かなAPIのため「Rubyフレンドリー」と見なされることが多いです。すでにRubyのエコシステムで作業しているユーザーには、Watirは生のSeleniumバインディングを使用するよりも、ブラウザと対話するための理念的で読みやすい方法を提供します。
参考文献
[1] Selenium WebDriver ドキュメント
[2] HTTPBin サービス
[3] 公式 Ruby プログラミング言語ウェブサイト
[4] Watir 公式ウェブサイト
[5] W3C HTTP プロキシ仕様
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



