【ITニュース解説】Check a list of IP addresses for proxies using IP2Proxy Dart
2025年10月03日に「Dev.to」が公開したITニュース「Check a list of IP addresses for proxies using IP2Proxy Dart」について初心者にもわかりやすく解説しています。
ITニュース概要
DartとIP2Proxyパッケージで、IPアドレスがプロキシかどうかを検出するCLIツールの構築法を紹介。IPアドレスリストからプロキシタイプ、国、脅威度などの詳細情報を簡単に取得できる。システム管理者など、大量のIPチェックが必要な場面で役立つ。
ITニュース解説
今回の記事は、Googleが開発したプログラミング言語であるDartを使って、IPアドレスがプロキシサーバーとして利用されているかどうかを調べるツールを作成する方法について解説している。Dartは、スマートフォンアプリ、デスクトップアプリ、Webアプリ、サーバーサイドアプリなど、さまざまなプラットフォームで高速なアプリケーションを構築するために最適化されたオブジェクト指向言語である。特にGoogleのクロスプラットフォームUIツールキットであるFlutterの基盤言語として広く知られている。DartはC言語に似た文法を持ち、Null SafetyやAsync-Awaitといった現代的な機能を備え、複数の機械語やJavaScriptにコンパイルできる柔軟性を持っている。
この記事で紹介されているのは、IP2Proxyというサービスが提供するDart用のパッケージ(プログラムの部品のようなもの)を利用し、コマンドラインインターフェース(CLI)形式でIPアドレスのリストからプロキシ関連のデータを取得する具体的な手順である。Debian 13というLinuxのバージョンを例にしているが、基本的な考え方は他の環境でも応用可能である。
まず、このツールを動かすための準備が必要となる。最初のステップはDart言語の開発環境をコンピューターにインストールすることだ。Dart公式サイトには、各OS向けの詳しいインストール手順が用意されているので、それに従って設定を進める。次に、IPアドレスとプロキシ情報の関連付けがされたデータベースファイル、「IP2Proxy PX12 BINファイル」というものが必要になる。これはプロキシ検出データが詰まったファイルで、IP2Locationのウェブサイトからダウンロードできる。商用版は広範で高精度なデータを提供するが、テストや小規模なプロジェクトであれば、無料のLITE版でも十分に使用できる。これらのBINファイルはダウンロード後、任意のフォルダに展開し、その場所を覚えておく必要がある。記事では /home/admin/data/IP2PROXY-PX12.BIN というパスを例にしている。
環境が整ったら、実際にプロジェクトを作成する。新しいプロジェクトを作成したいフォルダに移動し、dart create -t console ip2proxy_cli というコマンドを実行する。これにより、ip2proxy_cli という名前のDartコンソールアプリケーションのひな形が自動的に生成される。生成されたフォルダに cd ip2proxy_cli コマンドで移動すると、bin/ip2proxy_cli.dart というファイルがプログラムのエントリーポイント(プログラムが最初に実行される場所)として用意されているのが確認できる。
次に、作成したプロジェクトにIP2Proxy Dartパッケージと、コマンドライン引数を解析するためのargsパッケージを追加する。プロジェクトフォルダ内の pubspec.yaml という設定ファイルを編集し、dependencies セクションに ip2proxy: ^3.0.0 と args: ^2.7.0 を追記する。バージョン番号は記事執筆時点のものであり、最新版に合わせて変更することも推奨される。ファイルを保存した後、dart pub get コマンドを実行すると、Dartがこれらの必要なパッケージをインターネットからダウンロードし、プロジェクトに組み込んでくれる。
これで準備が完了し、いよいよプログラムのコードを実装する段階に入る。bin/ip2proxy_cli.dart ファイルを開き、既存のコードを記事に示されているコードに置き換える。このコードは、主に以下の機能を持っている。まず、argsパッケージを使って、コマンドラインから渡されるオプション(引数)を解析する部分がある。ユーザーは -d オプションでIP2Proxy BINデータベースのパスを指定でき、-i オプションでIPアドレスが記述されたファイルのパスを指定できる。これらのオプションが省略された場合、プログラムはデフォルトのデータベースファイル名(IP2PROXY-LITE-PX1.BIN)や標準入力(キーボードからの入力など)を使用するように設定されている。
プログラムは、指定されたデータベースパスを使って IP2Proxy オブジェクトを初期化する。そして、IPアドレスの入力元がファイルなのか、それとも標準入力なのかを判断し、そこからIPアドレスを読み込むための準備をする。入力されたIPアドレスは、utf8.decoder と LineSplitter() を使って、テキスト形式からDartで扱える文字列に変換され、1行ずつ処理される。
各IPアドレスに対しては、ipx.getAll(ip.trim()) というメソッドが呼び出される。このメソッドはIP2Proxyデータベースを検索し、そのIPアドレスがプロキシであるかどうか、プロキシの種類、国、地域、都市、ISP(インターネットサービスプロバイダ)、ドメイン、使用タイプ、ASN(自律システム番号)、AS名、最終確認日時、脅威情報、プロバイダ、詐欺スコアなど、非常に詳細な情報を取得する。これらの取得された情報は、CSV(カンマ区切り)形式で整形され、標準出力(通常は画面)に表示される。CSV形式の出力は、_csvEscape という関数を使って、値にカンマや引用符が含まれていても正しく表示されるようにエスケープ処理が施されている。プログラムの最初にCSVヘッダーも出力されるため、どのようなデータがどの項目に属するのかが一目でわかるようになっている。
プログラムが完成したら、実際に動作するかをテストする。記事では、echo -e "8.8.8.8" | dart run bin/ip2proxy_cli.dart -d /home/admin/data/IP2PROXY-PX12.BIN というコマンドでテストを行っている。これは「8.8.8.8」というIPアドレスをプログラムに渡し、指定したデータベースファイルを使ってそのプロキシ情報を取得する例だ。コマンドを実行すると、IPアドレス、プロキシであるかの状態、国、地域などの詳細な情報がCSV形式で出力される。
さらに、このツールを他のLinuxユーザーに配布しやすくするために、実行可能バイナリにコンパイルする手順も紹介されている。プロジェクトのルートフォルダで dart compile exe bin/ip2proxy_cli.dart -o ip2proxy_cli というコマンドを実行すると、Dartコードが直接実行できる単一のファイル(ip2proxy_cli)に変換される。これにより、Dartがインストールされていない環境でも、このファイル一つでプログラムを実行できるようになる。コンパイルされたバイナリは、echo -e "8.8.8.8\n1.1.1.1" | ./ip2proxy_cli -d /home/admin/data/IP2PROXY-PX12.BIN のように、複数のIPアドレスを一度に処理するテストも可能だ。
この解説を通じて、Dart言語とIP2Proxyパッケージを組み合わせることで、IPアドレスのプロキシ情報を簡単に取得できるコマンドラインツールを開発できることが理解できるだろう。システム管理者にとっては、Webサーバーのログファイルなど、大量のIPアドレスリストの中からプロキシサーバーを迅速に特定し、分析する上で非常に役立つツールとなる。また、この記事で紹介されているコードは、コマンドライン引数で入力ファイルを指定する機能も持っているため、手動でIPアドレスを一つずつ入力する手間を省き、より効率的に作業を進めることが可能だ。