ScrapyのHTTPプロキシミドルウェアは、リクエストメタデータからプロキシを読み取ります。

yield scrapy.Request(
    'https://example.com/',
    callback=self.parse,
    meta={'proxy': 'http://203.0.113.10:8080'},
)

ドキュメントのエンドポイントを置き換え、ミドルウェアは有効のままにします。HTTPプロキシ一覧は、このリクエストURLの公開候補を提供します。これはリクエストの経路を選択します。プロキシプールには別の選択ロジックが必要です。

認証は選択されたエンドポイントに従う

組み込みミドルウェアは、サポートされるプロキシURLと関連する認証ヘッダーを通じて提供される資格情報を処理します。予約済みのURL文字をエスケープし、そのURLをログに記録しないでください。

エンドポイントが変わった後、別のミドルウェアが以前のプロキシのBasicヘッダーを保持すべきではありません。経路とその資格情報を1つの層でまとめて管理させます。

選択順序とデフォルト

カスタムダウンロードミドルウェアがプロキシを選択する場合、組み込みプロキシミドルウェアがリクエストを処理する前に実行します。インストール済みリリースの順序とAPIを確認してください。廃止されたscrapy.contribのインポートは古いリリースのものです。

プロセス環境もスキーム固有のデフォルトを提供できます。意図的に直接接続するリクエストには、文書化されたproxyメタデータの特別な動作を使用します。キーがないことは必ずしも直接アクセスを意味しません。

実際の結果を確認します。407はプロキシ認証に関するものですが、Webサイトのレート制限やアクセス拒否は経路が正しく機能した後に発生することがあります。

関連記事