Isikhethi se-proxy esijikelezayo esabiwe ku-Go
Gcina isikhethi se-proxy se-Go siphila phakathi kwezicelo, vikela isimo sokukhetha esabiwe futhi wehlukanise ukukhetha umzila nokubheka ukuphuma kwawo.
Isikhethi singajikeleza kahle futhi siqhubeke sikhetha iproxy yokuqala. Iphutha ukwakha ngokungazi isikhethi esisha sesicelo ngasinye, okusetha kabusha isibali saso ngaphambi kokuba sibe nokukhetha kwesibili.
Yakha isikhethi kanye bese usigcina kanye nokuthutha. Uhlu lweproxy ye-HTTP lungahlinzeka ngabangeneleli be-HTTP bomphakathi beqoqo le-URL lapho izicelo zivumela abaxhumanisi bomphakathi. Qala ngohlu lwama-URL eproxy oluvele luqinisekisiwe futhi olungashayi mkhuba:
func rotatingProxy(urls []*url.URL) func(*http.Request) (*url.URL, error) {
var mu sync.Mutex
next := 0
return func(*http.Request) (*url.URL, error) {
mu.Lock()
selected := urls[next]
next = (next + 1) % len(urls)
mu.Unlock()
return selected, nil
}
}
Uhlelo oluzungezile kumele lwenqabe uhlu olungenalutho, luqinisekise ama-URL futhi lusebenzise okokufaka okuvamile net/http, net/url kanye ne-sync. Uhlu kufanele luhlale lungashintshi ngenkathi lesi sikhethi silusebenzisa, noma lushintshwe ngomklamo oqondaniswe ngokwehlukana.
Namathisela umsebenzi obuyisiwe ku-http.Transport eyodwa egciniwe. I-mutex ivikela ukulandelana kokukhetha phakathi kwezimpendulo ezenzeka ngesikhathi esisodwa. Akudingi ukubamba isihluthulelo ngenkathi isicelo senethiwekhi esisheshayo siphela.
Ungasebenzisi umzila ukuze nje uwuprinte
Ukushaya isikhethi futhi ngomlayezo wokuxilonga kuqhubekisela phambili isibali futhi. Lokho kuphuma kungase kuchaze umgeneli olandelayo esikhundleni somgeneli osetshenziswe isicelo osiphenyayo. Rekhoda ukukhetha ngaphakathi kwempendulo yangempela ngomkhombisi wendawo yokugcina ophephile.
Ukushaywa kwempendulo akubona ubufakazi bokuthi isicelo sithunyelwe ngempumelelo. Ukuqondiswa kabusha noma imizamo eyengeziwe yokuthutha kungase kwenze inkolelo elula ethi «ukushaywa kohlelo okukodwa, ukukhetha okukodwa» ibe nzima. Uma uhlelo lokusebenza kufanele lugcine umzila owodwa kuzo zonke izenzo eziningi, khetha lowo mzila emngceleni wohlelo lokusebenza esikhundleni sokusebenzisa impendulo ejikelezayo yomhlaba wonke.
Ukujikeleza akuthembisi neziqhumo zomphakathi ezihlukene. Kuhlela izindawo zokugcina. Ubunikazi bokugcina buhlala buyisici somzila ohlinzekwa yindawo ngayinye yokugcina.