🎯 カスタマイズ可能で検出回避型のクラウドブラウザ。自社開発のChromiumを搭載し、ウェブクローラーAIエージェント向けに設計されています。👉今すぐ試す
ブログに戻ります

Selenium Javaでスケーラブルなウェブスクレイピングのためのプロキシの設定方法

Michael Lee
Michael Lee

Expert Network Defense Engineer

18-Dec-2025
ちょっと見てみましょう

Scrapeless Proxiesであなたの自動化とスクレイピングを強化—速く、信頼でき、手頃な価格です。

Selenium Javaプロジェクトにプロキシを統合することは、真剣なウェブスクレイピングや自動化タスクには欠かせない要件です。プロキシを使用することで、本物のIPアドレスを隠し、地理的制限を回避し、リクエストを分散させてレート制限やIP禁止を回避できます。このガイドでは、Javaを使用してSelenium WebDriverでプロキシを構成する一般的で最も効果的な方法に焦点を当てます。

ChromeOptionsを使用したプロキシの設定

Selenium Javaでプロキシを設定する最も一般的かつ信頼できる方法は、WebDriverを初期化する前にブラウザオプションを構成することです。これには、Proxyオブジェクトを作成し、それをChromeOptions(またはFirefoxなどの他のブラウザの同等)に渡すことが含まれます。

Proxyオブジェクトは、HTTPおよびSSLトラフィックのためのプロキシサーバーアドレスを定義するために使用されます。

java Copy
import org.openqa.selenium.Proxy;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import io.github.bonigarcia.wdm.WebDriverManager;

public class Scraper {
    public static void main(String[] args) {
        // 1. WebDriverのセットアップ(WebDriverManagerを使用して便利に)
        WebDriverManager.chromedriver().setup();

        // 2. プロキシの詳細を定義(IP:PORT)
        String proxyAddress = "184.169.154.119:80";

        // 3. Proxyオブジェクトを作成し、HTTPおよびSSLプロキシを設定
        Proxy proxy = new Proxy();
        proxy.setHttpProxy(proxyAddress);
        proxy.setSslProxy(proxyAddress);

        // 4. ChromeOptionsインスタンスを作成し、プロキシオプションを設定
        ChromeOptions options = new ChromeOptions();
        options.setProxy(proxy);
        options.addArguments("--headless=new"); // オプション:ヘッドレスモードで実行

        // 5. 設定されたオプションでドライバーインスタンスを作成
        WebDriver driver = new ChromeDriver(options);

        // 6. テストURLに移動
        driver.get("https://httpbin.io/ip");
        
        // ... スクレイピングロジックの残り
        driver.quit();
    }
}

Javaでのプロキシの回転実装

大規模なスクレイピングを行う場合、リクエストがボットトラフィックとしてフラグ付けされないようにIPアドレスを回転させる必要があります。Javaでは、プロキシのリストを維持し、新しいWebDriverセッションごとにランダムに1つを選択することでこれを実現します。このアプローチは、ロードを分散させ、低いプロファイルを維持するのに非常に効果的です[3]。

java Copy
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
// ... その他のインポート

public class RotatingScraper {
    public static void main(String[] args) {
        // ... WebDriverのセットアップ

        // 1. プロキシアドレスのリストを定義(IP:PORT)
        List<String> proxyList = new ArrayList<>();
        proxyList.add("190.61.88.147:8080");
        proxyList.add("13.231.166.96:80");
        proxyList.add("35.213.91.45:80");

        // 2. セッション用にランダムにプロキシを選択
        Random rand = new Random();
        String proxyAddress = proxyList.get(rand.nextInt(proxyList.size()));

        // 3. ランダムに選択されたアドレスでProxyオブジェクトを設定
        Proxy proxy = new Proxy();
        proxy.setHttpProxy(proxyAddress);
        proxy.setSslProxy(proxyAddress);

        // 4. ChromeOptionsにプロキシオプションを設定
        ChromeOptions options = new ChromeOptions();
        options.setProxy(proxy);
        // ... その他のオプション

        // 5. ドライバーインスタンスを作成
        WebDriver driver = new ChromeDriver(options);
        // ... スクレイピングロジック
    }
}

認証プロキシの扱い

ユーザー名とパスワードを必要とするプレミアムプロキシの場合、標準のProxyオブジェクトだけでは不十分です。Seleniumは、ブラウザに表示される認証ポップアップをネイティブに処理しません。最も一般的な回避策は以下の通りです:

  1. プロキシ拡張機能の使用: プロキシ認証を処理し、認証情報を事前に設定するブラウザ拡張機能を利用します。
  2. プロキシマネージャーの使用: 認証をサーバー側で処理するプロキシマネージャーやゲートウェイ(Scrapelessが提供するものなど)を利用し、シンプルなIP:PORTエンドポイントを使用して接続します。

推奨プロキシソリューション:Scrapeless Proxies

プロフェッショナルなJavaベースのウェブスクレイピングにおいて、プロキシネットワークの質は非常に重要です。Scrapeless Proxiesは、大規模なSelenium操作に必要な速度、信頼性、匿名性を提供するように設計されています。

Scrapelessのレジデンシャルプロキシは、Selenium Javaプロジェクトに非常に推奨されており、洗練されたアンチボットシステムによって検出されブロックされる可能性が低い、本物のIPアドレスを提供します。さらに、彼らのスタティックISPプロキシは、レジデンシャルの信頼性と一貫した速度の完璧なバランスを提供し、安定したスクレイピング環境を維持するのに理想的です。Scrapelessを使用することで、常にクリーンで高評価のIPでスクレイピングブラウザを運用できることを保証できます。

よくある質問 (FAQ)

Q: Javaのシステムプロパティを使用してSeleniumのプロキシを設定できますか?
A: System.setProperty("http.proxyHost", "...")のようなシステムプロパティを設定できますが、これは基盤となるJavaネットワークスタックにのみ影響し、Seleniumが制御するブラウザには影響しません。ブラウザのネットワーク設定を構成するには、ChromeOptionsProxyオブジェクトを使用する必要があります。

Q: ProxyオブジェクトのHTTPとSSLプロキシ設定の違いは何ですか?
A: setHttpProxy()メソッドは標準HTTPトラフィック用のプロキシを構成し、setSslProxy()は安全なHTTPS(SSL/TLS)トラフィック用のプロキシを構成します。すべてのトラフィックが正しくルーティングされるように、両方とも同じプロキシアドレスを設定することがベストプラクティスです。

Q: 認証のためにプロキシ拡張機能を使用する方が良いのか、それともプロキシマネージャを使用する方が良いのか?
A: 大規模かつ本番レベルのスクレイピングには、一般的にプロキシマネージャまたはゲートウェイが好まれます。これにより、Seleniumコードの外部に認証とローテーションロジックが集中され、スクレイピングスクリプトがクリーンで変更に対してより堅牢になります。


参考文献

[1] GNU Wgetマニュアル: Wgetrcファイル
[2] GeeksforGeeks: Wgetを使用したウェブスクレイピング
[3] Seleniumドキュメント: ライブラリのインストール
[4] Oracle Javaネットワーキングとプロキシ
[5] Baeldung: Javaでのプロキシを使用したSelenium
[6] W3C作業草案: プロキシ要件
[7] Scrapeless Wiki: ヘッドレスブラウザとは
[8] Scrapeless Wiki: 最速のヘッドレスブラウザを持つベストウェブスクレイピングサービス
[9] Scrapeless Wiki: LXMLによるウェブスクレイピング
[10] Scrapeless Wiki: 推奨される無料自動データ収集ツール
[11] Scrapeless Wiki: Scrapelessブラウザ完全ガイド

Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。

最も人気のある記事

カタログ