Χρησιμοποιήστε IP proxy με το Undici του Node
Συνδέστε Undici ProxyAgent με ένα αίτημα fetch και χωρίστε τη δεξαμενή συνδέσεων από άλλη κίνηση Node.
Το Undici δρομολογεί αίτημα μέσω dispatcher. Δημιουργήστε ProxyAgent για το επιλεγμένο HTTP proxy και δώστε το στην κλήση fetch αντί να αλλάξετε τον καθολικό dispatcher όλης της διεργασίας.
npm install [email protected]
import { fetch, ProxyAgent } from 'undici';
const dispatcher = new ProxyAgent('http://203.0.113.10:8080');
try {
const response = await fetch('https://example.com/', {
dispatcher,
signal: AbortSignal.timeout(15000),
});
console.log(response.status);
console.log(await response.text());
} finally {
await dispatcher.close();
}
Αποθηκεύστε το πρόγραμμα ως αρχείο .mjs ή χρησιμοποιήστε έργο μονάδων ES. Αντικαταστήστε την IP τεκμηρίωσης με HTTP proxy από τη λίστα HTTP proxy. Η εισαγωγή χρησιμοποιεί σκόπιμα την υλοποίηση fetch του Undici, άρα η επιλογή dispatcher ανήκει στον πελάτη του παραδείγματος.
Ελέγξτε συμβατότητα Node πριν κατηγορήσετε την IP
Οι εκδόσεις Node που υποστηρίζει το Undici εξαρτώνται από την έκδοση του πακέτου. Το παράδειγμα χρησιμοποιεί Undici 8.12.3, που απαιτεί Node 22.19.0 ή νεότερο. Σφάλμα φόρτωσης μονάδας ή έκδοσης μηχανής συμβαίνει πριν φτάσει το αίτημα στο proxy. Ελέγξτε τις απαιτήσεις του εγκατεστημένου πακέτου αντί να θεωρείτε ότι κάθε Node εκτελεί το νεότερο Undici.
Ένας agent μπορεί να εξυπηρετεί επαναλαμβανόμενα αιτήματα
Το σύντομο πρόγραμμα κλείνει τον dispatcher στο τέλος. Αν ενεργή εφαρμογή στέλνει πολλά αιτήματα μέσω του ίδιου σημείου, κρατήστε τον agent για αυτόν τον φόρτο και κλείστε τον όταν τελειώσει. Δημιουργία και κλείσιμο agent για κάθε URL εμποδίζει χρήσιμη επαναχρησιμοποίηση συνδέσεων.
Καθολικός dispatcher ενδείκνυται μόνο όταν θέλετε την ευρύτερη αλλαγή. Η ρητή μεταβίβαση διευκολύνει δοκιμή IP proxy χωρίς αλλαγή εξερχόμενων αιτημάτων άλλου στοιχείου.
Κοιτάξτε απόκριση και στάδιο αποτυχίας
Το fetch δεν αντιμετωπίζει κάθε κατάσταση HTTP σφάλματος ως απορριφθείσα Promise. Ένα 403 ή 429 μπορεί να είναι πραγματική απάντηση ιστοτόπου μεταφερμένη μέσω proxy. Σφάλμα σύνδεσης ή σήραγγας μπορεί αντίθετα να απορρίψει το αίτημα πριν υπάρξει αντικείμενο απόκρισης. Διαβάστε την κατάσταση χωριστά από τα σφάλματα που πετά η κλήση.
Αν απαιτείται ταυτοποίηση, το ProxyAgent του Undici προσφέρει επιλογές κατασκευαστή. Μην προσθέτετε κεφαλίδα εξουσιοδότησης proxy στις κεφαλίδες αιτήματος του ιστοτόπου· ο agent χειρίζεται άλλο άλμα σύνδεσης.