SetProxyFunc ഉപയോഗിച്ച് Colly-യിലെ റൗണ്ട്-റോബിൻ പ്രോക്സി തിരഞ്ഞെടുപ്പ്
റൗണ്ട്-റോബിൻ തിരഞ്ഞെടുപ്പിന് 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 HTTP transport-ന് ഓരോ അഭ്യർത്ഥനയ്ക്കും തിരഞ്ഞെടുക്കാൻ അനുവദിക്കുന്നു. ഇത് ഓരോ OnRequest കോൾബാക്കിനുള്ളിലും പങ്കിട്ട കോൺഫിഗറേഷൻ മാറ്റുന്നത് ഒഴിവാക്കുന്നു.
ഈ നടപ്പാക്കലിൽ, SetProxyFunc DisableKeepAlives എന്നതും true ആയി സജ്ജമാക്കുന്നു. ഇത് നിലവിലുള്ള ഒരു *http.Transport അപ്ഡേറ്റ് ചെയ്യുന്നു, എന്നാൽ വ്യത്യസ്ത transport തരം പുതിയ HTTP transport ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നു. ഏതെങ്കിലും കസ്റ്റം RoundTripper സ്വഭാവം നിലനിൽക്കുമെന്ന് കരുതുന്നതിന് പകരം ബോധപൂർവ്വം സംരക്ഷിക്കുക.
Collector.Clone HTTP backend പങ്കിടുന്നു, അതിനാൽ ഒരു ക്ലോണിന്റെ പ്രോക്സി മാറ്റുന്നത് ആ പങ്കിട്ട backend മാറ്റിയേക്കാം. സമകാലിക ജോലിക്ക് മുമ്പ് ഉടമസ്ഥത തീരുമാനിക്കുക. റൗണ്ട്-റോബിൻ തിരഞ്ഞെടുപ്പ് നൽകിയ endpoint-കൾ കറക്കുന്നു, പരിശോധിച്ച പൊതു എക്സിറ്റ് ഐഡന്റിറ്റികളെ അല്ലെങ്കിൽ സ്വതന്ത്രമായി പരിശോധിച്ച ലഭ്യതയെ അല്ല.