Scrapy Boleh Tunjukkan Ubah Lencongan Sebelum Mengikutnya
Dedahkan sementara status ubah lencongan awal dan Location bagi GET berproksi melalui metadata permintaan, sambil memisahkan pengendalian ubah lencongan daripada penapisan ralat HTTP.
GET berproksi boleh sampai ke pelayan lalu mengikut ubah lencongan sehingga kegagalan akhir menyembunyikan respons pertama. Dedahkan 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],
},
)
Jadualkan permintaan ini melalui aliran start atau callback sedia ada labah-labah. Untuk ujian halaman awam yang dibenarkan, senarai proksi HTTP menyediakan calon untuk URL proksi permintaan. inspect_redirect patut merekod status respons dan pengepala Location daripada mengikutnya semula secara buta.
dont_redirect menghentikan ubah lencongan automatik untuk permintaan ini. handle_httpstatus_list membenarkan status yang dinamakan sampai ke callback daripada ditolak oleh penapisan ralat HTTP. Tetapan ini melibatkan tanggungjawab middleware yang berbeza.
Periksa apa yang dipilih oleh ubah lencongan: URL kanonik yang dimaksudkan, skema atau nama hos berbeza, halaman log masuk, atau kitaran berulang. 302 yang diterima selepas pemindahan berjaya ialah pemerhatian berbeza daripada kegagalan membuka sambungan proksi.
Apabila pengendalian ubah lencongan biasa dipulihkan, Scrapy mendedahkan redirect_urls dan redirect_reasons dalam metadata permintaan respons. Kedua-duanya boleh mengekalkan laluan menuju hasil akhir tanpa membiarkan ubah lencongan dilumpuhkan sepanjang crawl.
Respons terminal bukan secara automatik halaman yang dimaksudkan aplikasi. Simpan destinasi dan kandungan respons bersama diagnosis penghalaan.