Ανάγνωση του proxy endpoint και της IP σύνδεσης στο Scrapy
Χρησιμοποιήστε τα μεταδεδομένα του αιτήματος για τον επιλεγμένο proxy, αντιμετωπίστε το response.ip_address ως πληροφορία ομότιμου από τον handler και επαληθεύστε την IP εξόδου στον προορισμό.
Όταν εξετάζετε την επιλεγμένη διαδρομή, χρησιμοποιήστε το Request που συνδέεται με την ολοκληρωμένη απόκριση. Κρατήστε τρεις παρατηρήσεις χωριστά:
| Πεδίο | Σημασία |
|---|---|
response.request.meta.get('proxy') | Το επιλεγμένο proxy URL αυτού του αιτήματος, όταν υπάρχει |
response.ip_address | Διεύθυνση που παρέχεται από τον handler λήψης, ενδέχεται None |
| Αναφορά πηγής από αξιόπιστο προορισμό | Η δημόσια πηγή που παρατηρήθηκε εκεί |
Μέσα σε ένα callback, παραλείψτε από τα routine διαγνωστικά τα τμήματα του URL που φέρουν διαπιστευτήρια:
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,
)Στον handler HTTP/1.1 του Scrapy 2.13.3 η διεύθυνση προέρχεται από τον ομότιμο της σύνδεσης της απόκρισης, όχι από υπηρεσία IP εξόδου. Ορισμένες διαδρομές, όπως οι αποκρίσεις μηδενικού μήκους, μπορεί να την αφήσουν None. Άλλοι handlers μπορεί να την συμπληρώσουν διαφορετικά. Το None από μόνο του δεν αποδεικνύει άμεση δρομολόγηση.
Για έλεγχο εξόδου, ρωτήστε ένα αξιόπιστο endpoint υπό την προβλεπόμενη πολιτική proxy και κρατήστε την ταυτότητα του αιτήματος μαζί με την παρατήρηση. Το περιστρεφόμενο middleware μπορεί να δώσει σε μεταγενέστερο έλεγχο άλλο endpoint.
Οι ανακατευθύνσεις δημιουργούν επίσης άλλο αίτημα. Τα τελικά μεταδεδομένα περιγράφουν εκείνο το στάδιο· εξετάστε το ιστορικό ανακατεύθυνσης και οποιαδήποτε νέα επιλογή από middleware αντί να το θεωρήσετε απόδειξη της διαδρομής του πρώτου URL.