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 թույլ է տալիս HTTP transport-ին ընտրել յուրաքանչյուր հարցման համար։ Դա խուսափում է յուրաքանչյուր OnRequest callback-ի ներսում ընդհանուր կարգավորումների փոխարինումից։
Այս իրականացման մեջ SetProxyFunc-ը նաև DisableKeepAlives-ը դարձնում է true։ Այն թարմացնում է գոյություն ունեցող *http.Transport-ը, սակայն այլ տիպի transport-ը փոխարինում է նոր HTTP transport-ով։ Ցանկացած հատուկ RoundTripper վարք պահպանեք գիտակցաբար՝ փոխարենը չենթադրելով, որ այն կմնա։
Collector.Clone-ը կիսում է HTTP backend-ը, ուստի կլոնի պրոքսին փոխելը կարող է փոխել այդ ընդհանուր backend-ը։ Միաժամանակյա աշխատանքից առաջ հստակեցրեք սեփականությունը։ Շրջանաձև ընտրությունը պտտում է տրամադրված endpoint-ները, ոչ թե ստուգված հանրային ելքային ինքնությունները կամ անկախ ստուգված հասանելիությունը։