Javaアプリケーションで無料プロキシを使用する方法

Javaアプリケーションで無料プロキシを使用する方法

無料プロキシの選択と理解

無料プロキシのデジタル迷宮はチェス盤のように展開します。それぞれの駒(プロキシ)には独自の戦略、強み、そして避けられない脆弱性があります。Javaアプリケーションにプロキシを統合する前に、顔の見えないプレイヤーを区別する必要があります。

プロキシタイプ 説明 匿名 スピード 信頼性
ウェブ HTTPトラフィックのみ処理します 低中 速い 低い
翻訳 暗号化されたHTTP(S)をサポート 中高 メッド 低い
SOCKS4/5 プロトコルに依存せず、多用途 高い メッド メッド
透明 IPアドレスの公開、基本的なフィルタリング なし 速い 低い
エリート(高) IPアドレスとプロキシの事実の両方を隠します 高い メッド 低中

注意:無料プロキシは一時的なもので、インターネットの気まぐれな変動の影響を受けやすいため、ご利用前に必ず利用可能かどうかをご確認ください。


無料プロキシの収集

購入手続きはシンプルですが、確かな目利きが必要です。信頼できるアグリゲーターには以下のようなものがあります。

  • https://free-proxy-list.net/
  • https://www.sslproxies.org/
  • https://www.proxy-list.download/

通常、プロキシは次のように提供されます。

IP:ポート 例: 51.158.68.68:8811

HTTPS および SOCKS プロキシの場合は、追加のプロトコル インジケーターを探します。


HTTP/HTTPSプロキシ用のJavaの設定

JDKは、その洗練された静寂性により、システムプロパティ経由でプロキシ設定を可能にします。コマンドライン呼び出し、またはコード内宣言など、お好みの方法で設定してください。

コマンドライン経由:

java -Dhttp.proxyHost=51.158.68.68 -Dhttp.proxyPort=8811 -Dhttps.proxyHost=51.158.68.68 -Dhttps.proxyPort=8811 -jar myapp.jar

コード内構成:

System.setProperty("http.proxyHost", "51.158.68.68"); System.setProperty("http.proxyPort", "8811"); System.setProperty("https.proxyHost", "51.158.68.68"); System.setProperty("https.proxyPort", "8811");

これは JVM に「すべての HTTP および HTTPS 送信要求はこの監視装置を通過する必要があります」とささやきます。


きめ細かなプロキシの使用 java.net

外科手術のような精度、つまりリクエストごとのプロキシを求める人のために、Javaの プロキシ クラスではメスを提供します。

java.net.* をインポートします。プロキシ proxy = new Proxy(Proxy.Type.HTTP、new InetSocketAddress("51.158.68.68", 8811)); URL url = new URL("http://www.example.com"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy);

HTTPSの場合は、 HttpsURL接続構造は変更されていません。プロトコルだけが異なります。


SOCKS5プロキシ設定

アナーキストや秘密トンネルの設計者に愛用されている SOCKS プロトコルも同様に構成されています。

コマンドライン:

java -DsocksProxyHost=51.158.68.68 -DsocksProxyPort=8811 -jar myapp.jar

Java の場合:

System.setProperty("socksProxyHost", "51.158.68.68"); System.setProperty("socksProxyPort", "8811");

接続ごと:

Proxy proxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("51.158.68.68", 8811)); Socket socket = new Socket(proxy); // 下位レベルのAPIで使用 // または上記のURL接続で使用

ユーザー名とパスワードによる認証

ゲートキーパーが認証情報を要求すると、Javaの 認証子 クラスの弓が使用中:

Authenticator.setDefault(new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("username", "password".toCharArray()); } });

ネットワーク呼び出しの前にこれを呼び出します。HTTP/HTTPSとSOCKSプロキシの両方とシームレスに統合されます。


ローテーションプロキシ:難読化のダンス

禁止やレート制限を回避するには、プロキシを循環させます。これは一時的な接続のバレエです。

リストproxies = Arrays.asList( new Proxy(Proxy.Type.HTTP, new InetSocketAddress("1.1.1.1", 8080)), new Proxy(Proxy.Type.HTTP, new InetSocketAddress("2.2.2.2", 8080)) ); for (Proxy proxy : proxies) { URL url = new URL("http://target.com"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(proxy); // 応答を処理... }

より洗練されたものを求める場合は、ランダムまたは重み付け選択アルゴリズム、あるいは以下のようなライブラリを検討してください。 リトルプロキシ 動的プロキシ管理用。


タイムアウトと失敗の処理

無料プロキシはパリの天気と同じくらい信頼性が低いので、突然の雨に備えましょう。タイムアウトを設定してコードを保護しましょう。

conn.setConnectTimeout(5000); // 5秒 conn.setReadTimeout(5000);

再試行を実装し、データを信頼する前に必ずプロキシを検証してください。


プログラムによるプロキシの匿名性と速度のテスト

代理人の脈拍を測定します。代理人は生きているか、素早いか、慎重か?

long start = System.currentTimeMillis(); HttpURLConnection conn = (HttpURLConnection) new URL("http://api.ipify.org").openConnection(proxy); conn.setConnectTimeout(3000); conn.setReadTimeout(3000); if (conn.getResponseCode() == 200) { long elapsed = System.currentTimeMillis() - start; String externalIp = new BufferedReader(new InputStreamReader(conn.getInputStream())) .readLine(); System.out.println("プロキシは稼働中です。 IP: " + externalIp + " 待機時間: " + elapsed + "ms"); }

外部 IP を自分の IP と相互参照します。一致した場合、匿名性は単なる幻想です。


ベストプラクティス:無料プロキシの渦中を乗り切る

練習する 根拠
プロキシを検証する 多くは数時間以内に死亡します。チェックを自動化します。
HTTPS/SOCKSを使用する プライバシー保護のため、可能な場合は透過的/HTTP を避けてください。
定期的に回転する 禁止を緩和し、負荷を分散します。
タイムアウトを設定する デッドプロキシに固執することは避けてください。
機密データを制限する 無料のプロキシはトラフィックを記録する可能性がありますが、パスワードは送信しません。
robots.txtに従う 倫理的なスクレイピングを尊重し、法的な争いを回避します。

プロキシ処理を強化するための主要Javaライブラリ

図書館 目的 Mavenアーティファクト
OKHttp 最新の HTTP クライアント、簡単なプロキシの使用 com.squareup.okhttp3:okhttp
Apache HTTP クライアント 豊富なHTTP機能、プロキシサポート org.apache.httpcomponents:httpクライアント
リトルプロキシ プロキシサーバー、チェーン、ローテーション org.littleshoot:littleproxy

OkHttpの例:

OkHttpClient client = new OkHttpClient.Builder() .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("51.158.68.68", 8811))) .build(); リクエスト request = new Request.Builder().url("https://httpbin.org/ip").build(); レスポンス response = client.newCall(request).execute(); System.out.println(response.body().string());

一般的な問題のトラブルシューティング

症状 考えられる原因 救済策
java.net.ConnectException プロキシがデッド/アクセス不能 別のプロキシを試す
java.net.SocketTimeout プロキシまたはネットワークが遅い タイムアウトを増やし、プロキシをローテーションする
403/429の応答 IPが禁止またはレート制限されている プロキシをローテーションし、遅延を追加する
明らかな効果なし プロキシが設定されていない、正しく構成されていない、または無視されている プロキシ設定を再確認する
SSLハンドシェイクエラー プロキシはHTTPSをサポートしていません プロキシの種類を確認し、HTTP を使用します

サンプルワークフロー: Java Webスクレイパーへのプロキシの統合

  1. 新しいプロキシリストを取得する
  2. 各プロキシを検証する(接続、外部 IP の確認)
  3. プロキシローテーションメカニズムを構築する
  4. タイムアウトと再試行を構成する
  5. ローテーションプロキシを使用してターゲット URL をスクレイピングする
  6. 障害をログに記録し、無効なプロキシを禁止し、定期的にリストを更新します

結局のところ、Java のフリー プロキシを使ったダンスは芸術であり科学でもあります。自動化と警戒のパ・ド・ドゥであり、すべてのリクエストがデータ バレエの足音であり、各プロキシが Web の仮面舞踏会におけるつかの間の仮面なのです。

テオフィル・ボーヴェ

テオフィル・ボーヴェ

プロキシアナリスト

テオフィル・ボーヴェは、ProxyMist の 21 歳のプロキシ アナリストで、世界中のプロキシ サーバーの包括的なリストのキュレーションと更新を専門としています。テクノロジーとサイバー セキュリティに対する生来の適性を持つテオフィルは、信頼性の高い SOCKS、HTTP、エリート、匿名プロキシ サーバーを世界中のユーザーに無料で提供することで、チームの中核メンバーになりました。絵のように美しいリヨンの街で生まれ育ったテオフィルは、幼い頃からデジタル プライバシーとイノベーションに情熱を注いでいました。

コメント (0)

まだコメントはありません。あなたが最初のコメントを投稿できます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です