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 ਘੁਮਾਉਂਦੀ ਹੈ, ਤਸਦੀਕਸ਼ੁਦਾ ਜਨਤਕ ਐਗਜ਼ਿਟ ਪਛਾਣ ਜਾਂ ਸੁਤੰਤਰ ਤੌਰ ਤੇ ਜਾਂਚੀ ਉਪਲਬਧਤਾ ਨਹੀਂ।