プロキシリスト形式(TXT、CSV、JSON)を解析する方法

プロキシリスト形式(TXT、CSV、JSON)を解析する方法

プロキシリスト形式の構造

デジタル遊牧民の機敏さで、TXT、CSV、JSONといったプロキシリスト形式の藪の中を歩き回りましょう。それぞれの形式は微妙な方言を持ち、構文の中に秘密をささやきます。その構造を理解することが、その本質を解き明かす第一歩です。

形式 構造 一般的な区切り文字 代表的な分野
TXT ラインベース コロン、スペース IP、ポート、ユーザー名、パスワード
CSV 行ベース カンマ、セミコロン IP、ポート、ユーザー名、パスワード
JSON オブジェクト/配列 なし(構造化) IP、ポート、ユーザー名、パスワード

TXTプロキシリストの解析

構造

簡潔で実用的なTXT形式は、多くの場合、一連の行として提供されます。各行は、次のような小話です。

192.168.1.1:8080 203.0.113.42:3128:ユーザー名:パスワード

解析ロジック

  1. 行ごとの読み取り: 各行はプロキシエントリです。
  2. 区切り文字の検出: コロン(:)が一般的な区切り文字です。場合によっては、フィールド間に空白やタブが挿入されることもあります。
  3. フィールドの分割: 1 行あたりのコンポーネント数によって、使用可能なデータ (IP、ポート、およびオプションで資格情報) が決まります。

Pythonの例

proxies = [] で、open('proxies.txt', 'r') を f として実行します。for line in f: parts = line.strip().split(':') の場合、len(parts) == 2 の場合、ip、port = parts proxies.append({'ip': ip、'port': port}) の場合、elif len(parts) == 4 の場合、ip、port、user、pwd = parts proxies.append({'ip': ip、'port': port、'username': user、'password': pwd})

よくある落とし穴

  • 混合区切り文字: リストによってはコロンとスペースが混在する場合があります。「Parisian boulevard」のような穏やかな正規表現であれば、両方に対応できます。
  • 末尾の空白: 解析がつまずかないように、熱心に剥ぎ取ってください。

CSVプロキシリストの解析

構造

データのブルジョアジーであるCSVは、順序を重視します。フィールドはカンマ、あるいはフランス語圏ではセミコロンで区切られます。

IP,ポート,ユーザー名,パスワード 192.168.1.1,8080,, 203.0.113.42,3128,ユーザー名,パスワード

解析ロジック

  1. ヘッダー認識: 最初の行には、多くの場合、フィールドの名前が付けられます。
  2. 区切り文字の宣言: 区切り文字を指定します。CSV は気まぐれです。
  3. 行の反復: 各行はプロキシであり、空のフィールドが予想されます。

Pythonの例

csv をインポートします。proxies = [] で、open('proxies.csv', newline='') を csvfile として読み込みます。reader = csv.DictReader(csvfile) の row を reader に格納します。proxies.append({ 'ip': row.get('ip', ''), 'port': row.get('port', ''), 'username': row.get('username', ''), 'password': row.get('password', ''), })

よくある落とし穴

  • 引用符付きフィールド: CSV では、特にパスワードにコンマが含まれている場合、フィールドが引用符で囲まれることがあります。
  • 欠落しているヘッダー: ヘッダーが存在しない場合は、列を慎重に列挙してください。

JSONプロキシリストの解析

構造

JSON、モダニストのマニフェスト。構造化され、自己記述的で、中括弧で囲まれている。

[ {"ip": "192.168.1.1", "port": 8080}, {"ip": "203.0.113.42", "port": 3128, "username": "myuser", "password": "mypassword"} ]

解析ロジック

  1. ネイティブ構造としてロード: JSON は辞書またはリストに逆シリアル化されます。
  2. フィールド抽出: フィールドに直接アクセスします。フィールドの有無は、エレガントなオプションの問題です。

Pythonの例

import json with open('proxies.json') as f: proxies = json.load(f) # proxies は、それぞれ IP、ポート、およびオプションの資格情報を持つ辞書のリストになりました。

よくある落とし穴

  • 不正な JSON: コンマが抜けていたり、括弧が外れていたりすると、建物全体が崩壊してしまいます。
  • データ型: ポートは整数または文字列として提供されます。解析後に型を調整します。

比較表: TXT vs CSV vs JSON

特徴 TXT CSV JSON
人間の読みやすさ 高い 中くらい 高い
解析の複雑さ 低~中 中くらい 低い
メタデータのサポート なし ヘッダー経由で可能 広範囲にわたる
一般的な区切り文字 コロン、スペース カンマ、セミコロン N/A(構造化)
資格情報を扱う 時々 はい はい
バルクへの適合性 高い 高い 高い

不整合とエッジケースの処理

混合フォーマット

世の中には、時に整然としたものを拒絶するものがあります。例えば、カンマ区切りのTXTファイル、ヘッダーのないCSVファイル、配列のJSON配列などです。こうした混沌とした状況を解析するには、次のようにします。

  • 区切り文字を自動検出: Pythonの csv.スニファー または正規表現を使用して区切り文字をテストします。
  • 柔軟なフィールドマッピング: ヘッダーが存在しない場合は、位置によってフィールドをマップしますが、オプションのフィールド (ユーザー名/パスワードなど) を許可します。
  • 正常なフォールバック: ラップ解析 試す/除く; 大通りの経営者のような冷静さで、破損したエントリをログに記録してスキップします。

Unicodeとエンコーディング

プロキシリストは国際的な産物であり、UTF-8、Latin-1、あるいはそれ以下のエンコードで届く可能性があります。必ずエンコードを指定してください。

open('proxies.txt', encoding='utf-8') として f: # を実行し、通常通り解析する

プロキシデータを変換して使用する

解析されたプロキシは、多くの場合、HTTP クライアントまたはライブラリ用にフォーマットする必要があり、資格情報を使用して文字列化します。

def format_proxy(proxy): proxy.get('username') かつ proxy.get('password'): return f"http://{proxy['username']}:{proxy['password']}@{proxy['ip']}:{proxy['port']}" else: return f"http://{proxy['ip']}:{proxy['port']}"

美的タッチ:構文解析の構文

パースは単なる自動化ではなく、データのアクセントを聞き取る芸術です。区切り文字、フィールドの欠落、時折現れる場違いな文字といった微妙な変化に注意を払い、洗練されたフレーズのように優雅にコードを適応させましょう。

これらのテクニックを使用すると、パーサーは国際的な存在となり、あらゆるプロキシ リスト サロンで快適に使用でき、TXT、CSV、または JSON とスムーズに対話し、接続の重要な鼓動の中心部分をそれぞれから抽出できるようになります。

テオフィル・ボーヴェ

テオフィル・ボーヴェ

プロキシアナリスト

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

コメント (0)

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

コメントを残す

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