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/")

Defnyddiwch github.com/gocolly/colly/v2 a'i becyn proxy yn swyddogaeth y rhaglen, gan gadw'r trin gwallau arferol. Ffurfweddwch y detholwr cyn i geisiadau neu ymweliadau asyncronaidd ddechrau. Mae'r rhestr procsi HTTP yn darparu ymgeiswyr cyhoeddus ar gyfer mewmbyr endpoint y newidiwr.

Mae SetProxy yn dewis endpoint sefydlog; mae SetProxyFunc yn gadael i'r transport HTTP ddewis fesul cais. Mae'n osgoi disodli'r ffurfweddiad a rennir y tu mewn i bob galwad yn ôl OnRequest.

Yn y gweithrediad hwn, mae SetProxyFunc hefyd yn gosod DisableKeepAlives yn true. Mae'n diweddaru *http.Transport presennol, ond yn disodli math gwahanol o transport â transport HTTP newydd. Cadwch unrhyw ymddygiad RoundTripper cyfaddas yn fwriadol yn hytrach na thybio y bydd yn goroesi.

Mae Collector.Clone yn rhannu'r backend HTTP, felly gall newid procsi clôn newid y backend a rennir hwnnw. Setlwch berchnogaeth cyn gwaith cyfochrog. Mae dewis rownd-robin yn cylchdroi'r endpoints a ddarperir, nid hunaniaethau ymadael cyhoeddus wedi'u gwirio na darpariaeth wedi'i harchwilio'n annibynnol.

Erthyglau cysylltiedig