imroc / req

Simple Go HTTP client with Black Magic
https://req.cool
MIT License
4.12k stars 334 forks source link

请求支持设置代理!!!! #292

Open 23233 opened 8 months ago

23233 commented 8 months ago

预想的使用

requests:= req.R()
requests.setProxy() // 设置ip地址
imroc commented 8 months ago

代理是client级别的设置,想在request上动态改变,可以参考这里的技巧 https://req.cool/docs/examples/easily-write-crawlers-with-req/#automatically-change-ip-when-request-fails-set-proxy

23233 commented 8 months ago

这我知道 我现在也是这样使用 但是在如下场景变得非常不好用 我只能创建无数个client 我有一个代理 返回的一些可用的代理ip 所以我必须指定1个IP 给client 然后使用这个ip跑下面的请求 如果使用client的技巧 要么返回错误 要么就自动切换了ip 都不是那么好用 理想中希望有一个方式 甚至可以说 req.R() 新增一个 req.DR() DR就是 dynamic request的概念 可以动态的调节 proxy仅对这个request有效就更好了 这样我只需要指定一个 proxyClient 在发起请求之前 设置 request.setproxy(ip) 就可以完成代理的切换 而且保持在一个client里面

imroc commented 8 months ago

需求合理,未来考虑实现下

dyhgoa commented 4 days ago

我有带用户名和密码的代理,这个就无法正常使用了 proxyip := fmt.Sprintf("socks5h://%s:%s@%s", username, password, proxy_str) req.SetProxyURL(proxyip)