代理切换器
go
package main
import (
"bytes"
"log"
"github.com/gocolly/colly"
"github.com/gocolly/colly/proxy"
)
func main() {
// 实例化默认 collector
c := colly.NewCollector(colly.AllowURLRevisit())
// 切换两个 SOCKS5 代理
rp, err := proxy.RoundRobinProxySwitcher("socks5://127.0.0.1:1337", "socks5://127.0.0.1:1338")
if err != nil {
log.Fatal(err)
}
c.SetProxyFunc(rp)
// 打印response
c.OnResponse(func(r *colly.Response) {
log.Printf("%s\n", bytes.Replace(r.Body, []byte("\n"), nil, -1))
})
// Fetch 请求5次 httpbin.org/ip
for i := 0; i < 5; i++ {
c.Visit("https://httpbin.org/ip")
}
}