MENU

【FREE PROXY】Pythonで無料プロキシを使用してWebスクレイピングする使用する方法とプロキシの取り扱いについて解説

当ページのリンクには広告(PR)が含まれていることがあります。
【FREE PROXY】Pythonで無料プロキシを使用してWebスクレイピングする使用する方法とプロキシの取り扱いについて解説のアイキャッチ

無料プロキシのIPアドレスとポートが見つかっても、そのまま業務データの取得に使えるとは限りません。通信を中継する相手の運営元、記録の扱い、利用条件を確認できるかが先に問題になります。

Requestsにはプロキシを指定する機能があります。ただし、接続できたことは、そのプロキシを信頼できる根拠にはなりません。ここでは公開リストの推奨や稼働保証をせず、設定の読み方と、管理できる環境での確認方法を扱います。

目次

プロキシが通信の間に入る

プロキシは接続先へ直接送る通信を別のサーバーで中継する仕組みです。どの情報が中継側から見えるかは、通信方式やTLSの終端位置によって変わります。プロキシを使うというだけで、匿名性や暗号化が保証されるわけではありません。

運営元が分からない接続先へ、ログイン情報、社内URL、顧客データを流す判断は避けます。無料か有料かという料金区分だけで、安全性や速度の優劣を決めることもできません。必要なら、組織で承認された接続先や、取得先が用意するAPIを確認します。

RequestsのキーとURLの違い

proxies辞書のhttpとhttpsは取得先URLの方式を表します。一方、値に書くURLの先頭は、プロキシへの接続方式です。

例えば、httpsのキーにhttpで始まるプロキシURLを指定する形もあります。取得先がHTTPSだからといって、値も機械的にhttpsへ書き換える設定ではありません。実際に対応する方式や認証方法は、プロキシ側の案内に従います。

Requestsの公式資料は、環境変数のプロキシ設定がSession.proxiesと干渉する場合を説明しています。個別の通信を確認するときは、そのリクエストのproxies引数に明示します。接続先を変える前に、HTTP_PROXY、HTTPS_PROXY、NO_PROXYなど既存設定の有無も確認します。

管理できるテスト環境で一度だけ確認する

次は手元で用意したHTTPページと、使用を許可されたHTTPプロキシがある場合の例です。127.0.0.1:8000が取得先、127.0.0.1:8080が中継先という架空の構成です。コードだけではプロキシサーバーは起動しません。

import requests

url = "http://127.0.0.1:8000/example.html"
proxy = "http://127.0.0.1:8080"
proxies = {"http": proxy, "https": proxy}

response = requests.get(
    url,
    proxies=proxies,
    timeout=(3, 10),
    allow_redirects=False,
)
if response.status_code != 200:
    raise RuntimeError(f"取得を止めました: HTTP {response.status_code}")
print(response.status_code)
print(response.headers.get("Content-Type"))
print(response.text[:100])

起動していないポートを指定すれば接続に失敗します。失敗時に別の公開プロキシを次々と試す構成にはしていません。接続先とポート、プロキシが対応する方式、認証、タイムアウトの順に確認できます。

この例では、手元のHTTPサーバーへローカルの中継を通し、指定した取得先が中継側の記録に残ることを確認しました。公開されている無料プロキシやHTTPSの通信は検証していません。

証明書エラーや拒否を設定変更だけで消さない

HTTPSで証明書エラーが出ても、verify=Falseで検証を無効にする方法を解決策にしないようにします。Requestsの公式資料でも、検証を無効にすると相手の証明書を受け入れ、中間者攻撃に弱くなることが説明されています。組織のプロキシで証明書が必要なら、管理者の案内と信頼する証明書の設定を確認します。

取得先から拒否やアクセス制限を受けた場合は、許可された取得方法と利用条件へ戻ります。プロキシの切り替えは、取得許可の代わりにはなりません。設定例が動くかという技術上の確認と、その経路で取得してよいかという判断を分けて進めます。

関連する作業

取得を始める前の確認と、Pythonでの取得・保存の流れは次の記事にまとめています。

参考資料

この記事を書いた人

Watanabeのアバター Watanabe サイト運営者

2020年よりブログ開始。
SEOが思いのほか性にあっていたようで現在に至る。
モットーは「勝率の高い選択をする」
AIは活用するが吉、最後は人間が息を吹き込む。
アートと科学を追求し、日々精進。
―――
収益:6~7桁をウゴウゴ。
サイト:ペラサイト~中規模サイトまで運営中。
案件:1000円以上の案件をメインに取組中。
打ち手:ブラックSEO~ホワイトSEOまで
―――

目次