Saat memeriksa rute yang dipilih, gunakan Request yang terlampir pada respons yang selesai. Jaga tiga pengamatan tetap terpisah:

BidangArti
response.request.meta.get('proxy')URL proxy yang dipilih untuk permintaan ini, bila ada
response.ip_addressAlamat yang diberikan handler unduhan, mungkin None
Laporan sumber dari tujuan tepercayaSumber publik yang diamati di sana

Di dalam callback, hilangkan bagian URL yang membawa kredensial dari diagnostik rutin:

from urllib.parse import urlsplit

proxy = response.request.meta.get('proxy')
proxy_host = urlsplit(proxy).hostname if proxy else None
self.logger.info(
    'target_host=%s proxy_host=%s peer_ip=%s',
    urlsplit(response.url).hostname, proxy_host, response.ip_address,
)

Pada handler HTTP/1.1 Scrapy 2.13.3 alamat berasal dari peer koneksi respons, bukan dari layanan IP keluar. Beberapa jalur, termasuk respons berpanjang nol, dapat membiarkannya None. Handler lain dapat mengisinya secara berbeda. None sendiri tidak membuktikan perutean langsung.

Untuk pemeriksaan keluar, tanyakan endpoint tepercaya di bawah kebijakan proxy yang dimaksud dan simpan identitas permintaan bersama pengamatan. Middleware berputar dapat memberi pemeriksaan berikutnya endpoint lain.

Pengalihan juga membuat permintaan lain. Metadata akhir menjelaskan tahap itu; periksa riwayat pengalihan dan setiap pemilihan ulang oleh middleware alih-alih menganggapnya bukti rute URL pertama.

Artikel terkait