如何在使用代理时阻止站点看到您的源 IP 地址?

How to stop your source IP address being seen by a site while using proxies?

提问人:DoctorEvil 提问时间:8/19/2023 更新时间:8/19/2023 访问量:94

问:

我正在尝试使用代理从网站上抓取一些数据,我不会在这里放置任何代码,因为它有点长,可能对问题不重要。我可以列举这些事实:

  • 我拥有的代码有时确实有效,这意味着它应该很好
  • 在几十个请求之后,脚本被阻止(即使使用轮换代理!)
  • 现在有趣的部分是:在被一个代理提供商阻止后,如果我立即切换到下一个代理提供商,那个代理提供商也会被阻止!
  • 我尝试过 和 ,但两者都以同样的方式失败。requests.session()httpx.Client()


所以我认为这里唯一的结论是,我的 IP 以某种方式被这些代理泄露并显示给网站,触发了它的阻止。有问题的代理是 Brightdata Datacenter(便宜的)和 proxy-cheap.com 的住宅代理,它们应该会更好一些。


有没有办法防止我的 IP 与代理一起发送?我真的不认为有其他选择,在让它们最初工作一段时间后,他们怎么能阻止来自不同提供商的轮换代理。


顺便说一句,我敢肯定这不是我的错误,会话是这样创建的

因此每个请求都使用相同的代理。
session = httpx.Client(proxies={"http://":proxy_url, "https://":proxy_url})

python-requests 代理 httpx

评论

0赞 gthanop 8/19/2023
httpx.Client似乎以大致等同于 .根据请求高级使用指南,对象会在从 Session 实例发出的所有请求中保留 cookie。我认为,AFAIU 服务器可以通过其 cookie 来识别客户端。如果是这样,那么您可以尝试在 中禁用对 cookie 的支持,或者在更改代理之前创建一个新实例(以防服务器需要 cookie)...requests.SessionSessionSessionSession
0赞 gthanop 8/19/2023
但是我是 Web 编程的新手,所以不要认为我的话是理所当然的。
0赞 DoctorEvil 8/20/2023
是的,它们非常相似,这就是为什么我尝试使用两者的原因,因为代码几乎相同。我还没有尝试过 urllib,因为这需要更多的修改。
0赞 DoctorEvil 8/20/2023
我实际上想保留 cookie,因为脚本应该打开一个链接,解决验证码,然后获取数据。我有一个抓取线程,所以每个线程都与一个单独的会话一起工作。就像我说的,它工作了一小段时间,但后来就被阻止了。也许我应该尝试更好的代理,就像下面的答案所暗示的那样,也许我会有更多的运气。

答:

0赞 Homo Antiquum 8/19/2023 #1

我相信简单的解决方案是购买精英代理,因为某些代理会告诉服务器请求是由代理发出的。

评论

0赞 DoctorEvil 8/20/2023
我能尝试的最好的可能是 Brightdata Residential,看看情况如何。
0赞 DoctorEvil 8/20/2023
我尝试了 Brightdata ISP 代理,它们也有同样的问题。
0赞 Community 8/30/2023
您的答案可以通过其他支持信息进行改进。请编辑以添加更多详细信息,例如引文或文档,以便其他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何写出好答案的更多信息。