Круговий вибір проксі в 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.
У цій реалізації SetProxyFunc також встановлює DisableKeepAlives у true. Він оновлює наявний *http.Transport, але інший тип transport замінює новим HTTP transport. Зберігайте будь-яку нестандартну поведінку RoundTripper свідомо, а не припускайте, що вона виживе.
Collector.Clone спільно використовує HTTP backend, тому зміна проксі клона може змінити цей спільний backend. Визначте володіння перед паралельною роботою. Круговий вибір чергує надані endpoint-и, а не перевірені публічні вихідні ідентичності чи незалежно перевірену доступність.