Closed putianhui closed 3 months ago
我下面的示例把认证去掉可以正常访问,但是认证加上就无法使用了
package main import ( "fmt" "github.com/imroc/req/v3" "math/rand" "time" ) func main() { c:=NewAutoChangeProxyClient() fmt.Println(getProxyUrl()) resp, _ := c.R().Get("https://xxxx.com/ip") fmt.Println(resp.String()) } var proxies = []string{ // 没有认证可以使用 "http://x.x.x.x:8888", // 有认证无法使用 "http://user:password@x.x.x.x:8888", } // getProxyUrl 随机选择并返回一个代理URL func getProxyUrl() string { rand.Seed(time.Now().UnixNano()) // 初始化随机种子 if len(proxies) > 0 { randomIndex := rand.Intn(len(proxies)) // 生成一个随机索引 return proxies[randomIndex] // 返回随机选中的代理URL } return "" // 如果没有代理配置,返回空字符串 } func NewAutoChangeProxyClient() *req.Client { client := req.C() // 在初始化客户端时设置一个随机代理 client.SetProxyURL(getProxyUrl()) client.SetTimeout(5 * time.Second). EnableDumpEachRequest(). SetCommonRetryCount(len(proxies)). SetCommonRetryCondition(func(resp *req.Response, err error) bool { return err != nil || resp.StatusCode == 403 }). SetCommonRetryHook(func(resp *req.Response, err error) { // 如果需要重试,随机选择一个新的代理 c := client.Clone().SetProxyURL(getProxyUrl()) // 使用新的随机代理创建客户端副本 resp.Request.SetClient(c) // 为当前请求设置新的客户端实例,该实例使用了新的代理 }) return client }
http://user:password@x.x.x.x:8888 这种应该可以用
http://user:password@x.x.x.x:8888
确实可以 我代码中使用代理服务器时的账号错了,sorry。
我下面的示例把认证去掉可以正常访问,但是认证加上就无法使用了