Scrapy shell 内で、ダウンローダーに実行させたいリクエストを組み立てます:

from scrapy import Request

fetch(Request(
    "https://www.example.com/",
    meta={"proxy": "http://proxy.example:8080"},
))
response.status

HttpProxyMiddleware はその Request のメタデータからプロキシの値を読み取ります。これは有効なダウンローダーミドルウェア設定で有効になっている必要があります。その後の response 変数はこのフェッチに属します。この公開 URL では、公開仲介業者が許可されている場合、HTTP プロキシ一覧から認証なしの HTTP アドレスを選び、その URL をそのリクエストのプロキシメタデータに入れます。

Scrapy プロジェクトから shell を起動すると、そのプロジェクトの設定を読み込めます。これによりミドルウェアやその他の設定が選ばれますが、特定のプロキシエンドポイント自体は選ばれません。上記のリクエストメタデータがその選択を直接提供します。

Basic 認証情報を使うプロキシの場合、Scrapy はプロキシ URL にユーザー情報を記載します。組み立てる前にアカウント部分の予約文字をエンコードしてください。そのアカウント用にウェブサイトの Authorization ヘッダーを追加する必要はありません。

Scrapy はサポートされている環境変数からプロキシを検出することもできます。リクエストの明示的なプロキシメタデータが優先されます。意図的に直接接続するリクエストでは、プロキシ値 None により、そのミドルウェアの環境ベースの選択がそのリクエストで無効になります。

関連記事