Skip to content

代理切换器


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