Κυκλική επιλογή διακομιστή μεσολάβησης στο Colly με SetProxyFunc
Χρησιμοποιήστε το SetProxyFunc για κυκλική επιλογή, λαμβάνοντας υπόψη το keep-alive, την αντικατάσταση transport και το κλωνοποιημένο backend.
collector := colly.NewCollector()
switcher, err := proxy.RoundRobinProxySwitcher(
"http://proxy-a.example:8080",
"http://proxy-b.example:8080",
)
if err != nil {
return err
}
collector.SetProxyFunc(switcher)
err = collector.Visit("https://www.example.com/")Χρησιμοποιήστε το github.com/gocolly/colly/v2 και το πακέτο proxy του στη συνάρτηση της εφαρμογής, διατηρώντας την κανονική διαχείριση σφαλμάτων. Ρυθμίστε τον επιλογέα πριν ξεκινήσουν τα αιτήματα ή οι ασύγχρονες επισκέψεις. Η λίστα διακομιστών μεσολάβησης HTTP παρέχει δημόσιους υποψηφίους για τις εισόδους endpoint του εναλλάκτη.
Το SetProxy επιλέγει σταθερό endpoint· το SetProxyFunc επιτρέπει στο transport του HTTP να επιλέγει ανά αίτημα. Έτσι αποφεύγεται η αντικατάσταση της κοινόχρηστης διαμόρφωσης μέσα σε κάθε callback OnRequest.
Σε αυτή την υλοποίηση, το SetProxyFunc θέτει επίσης το DisableKeepAlives σε true. Ενημερώνει ένα υπάρχον *http.Transport, αλλά αντικαθιστά διαφορετικό τύπο transport με νέο HTTP transport. Διατηρήστε σκόπιμα οποιαδήποτε προσαρμοσμένη συμπεριφορά RoundTripper αντί να υποθέσετε ότι επιβιώνει.
Το Collector.Clone μοιράζεται το HTTP backend, οπότε η αλλαγή του proxy ενός κλώνου μπορεί να αλλάξει αυτό το κοινόχρηστο backend. Καθορίστε την κυριότητα πριν από παράλληλη εργασία. Η κυκλική επιλογή εναλλάσσει τα παρεχόμενα endpoint, όχι επαληθευμένες δημόσιες ταυτότητες εξόδου ή ανεξάρτητα ελεγμένη διαθεσιμότητα.