Το Scrapy μπορεί να δείξει την ανακατεύθυνση πριν την ακολουθήσει
Αποκαλύψτε προσωρινά την αρχική κατάσταση ανακατεύθυνσης και την κεφαλίδα Location ενός GET μέσω διακομιστή μεσολάβησης μέσω μεταδεδομένων αιτήματος, κρατώντας τον χειρισμό ανακατευθύνσεων ξεχωριστό από το φιλτράρισμα σφαλμάτων HTTP.
Ένα GET μέσω διακομιστή μεσολάβησης μπορεί να φτάσει σε έναν διακομιστή και στη συνέχεια να ακολουθήσει ανακατευθύνσεις, ώσπου η τελική αποτυχία να κρύψει την πρώτη απόκριση. Αποκαλύψτε αυτή την αρχική απόκριση για διάγνωση:
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],
},
)
Προγραμματίστε αυτό το αίτημα μέσω της υπάρχουσας ροής εκκίνησης ή callback της αράχνης. Για μια επιτρεπόμενη δοκιμή δημόσιας σελίδας, η λίστα διακομιστών μεσολάβησης HTTP παρέχει υποψηφίους για το URL του διακομιστή μεσολάβησης του αιτήματος. Το inspect_redirect θα πρέπει να καταγράφει την κατάσταση της απόκρισης και την κεφαλίδα Location αντί να την ακολουθεί ξανά στα τυφλά.
Το dont_redirect σταματά την αυτόματη ανακατεύθυνση για αυτό το αίτημα. Το handle_httpstatus_list επιτρέπει στις αναφερόμενες καταστάσεις να φτάσουν στο callback αντί να απορριφθούν από το φιλτράρισμα σφαλμάτων HTTP. Οι ρυθμίσεις αφορούν διαφορετικές ευθύνες του middleware.
Ελέγξτε τι επιλέγει η ανακατεύθυνση: έναν επιδιωκόμενο κανονικό URL, διαφορετικό σχήμα ή όνομα κεντρικού υπολογιστή, σελίδα σύνδεσης ή επαναλαμβανόμενο κύκλο. Ένα 302 που λαμβάνεται μετά από επιτυχή μεταφορά είναι διαφορετική παρατήρηση από την αποτυχία ανοίγματος της σύνδεσης μέσω διακομιστή μεσολάβησης.
Όταν αποκατασταθεί ο κανονικός χειρισμός ανακατευθύνσεων, το Scrapy εκθέτει τα redirect_urls και redirect_reasons στα μεταδεδομένα αιτήματος της απόκρισης. Αυτά μπορούν να διατηρήσουν τη διαδρομή προς ένα τελικό αποτέλεσμα χωρίς να αφήνουν τις ανακατευθύνσεις απενεργοποιημένες για όλη τη σάρωση.
Μια τελική απόκριση δεν είναι αυτόματα η σελίδα που είχε σκοπό η εφαρμογή. Κρατήστε τον προορισμό και το περιεχόμενο της απόκρισης μαζί με τη διάγνωση δρομολόγησης.