GET berproxy dapat mencapai server lalu mengikuti pengalihan sampai kegagalan akhir menutupi respons pertama. Tampilkan respons awal itu untuk diagnosis:

request = scrapy.Request(
    'https://service.example/page',
    callback=inspect_redirect,
    meta={
        'proxy': 'http://proxy.example:8080',
        'dont_redirect': True,
        'handle_httpstatus_list': [301, 302, 303, 307, 308],
    },
)

Jadwalkan permintaan ini melalui alur start atau callback yang sudah ada pada spider. Untuk uji halaman publik yang diizinkan, daftar proxy HTTP menyediakan kandidat untuk URL proxy permintaan. inspect_redirect harus mencatat status respons dan header Location alih-alih mengikutinya kembali secara buta.

dont_redirect menghentikan pengalihan otomatis untuk permintaan ini. handle_httpstatus_list membiarkan status yang disebutkan mencapai callback alih-alih ditolak oleh penyaringan galat HTTP. Pengaturan ini menyangkut tanggung jawab middleware yang berbeda.

Periksa apa yang dipilih pengalihan: URL kanonik yang dimaksud, skema atau nama host berbeda, halaman login, atau siklus berulang. 302 yang diterima setelah transport berhasil adalah pengamatan berbeda dari gagal membuka koneksi proxy.

Saat penanganan pengalihan normal dipulihkan, Scrapy menampilkan redirect_urls dan redirect_reasons pada metadata permintaan respons. Keduanya dapat mempertahankan jalur menuju hasil akhir tanpa membiarkan pengalihan dinonaktifkan sepanjang perayapan.

Respons terminal bukan otomatis halaman yang dimaksudkan aplikasi. Simpan tujuan dan isi respons bersama diagnosis perutean.

Artikel terkait