gpt4 book ai didi

python - 了解请求模块中的代理参数

转载 作者:太空宇宙 更新时间:2023-11-04 09:08:32 25 4
gpt4 key购买 nike

我正在使用 requests我的脚本中的模块,我想了解 get() 方法中的 proxies 参数。 This answer贴出了下面的代码来说明proxies参数的用法:

http_proxy  = "10.10.1.10:3128"
https_proxy = "10.10.1.11:1080"
ftp_proxy = "10.10.1.10:3128"

proxyDict = {"http":http_proxy, "https":https_proxy, "ftp":ftp_proxy }

r = requests.get(url, headers=headers, proxies=proxyDict)

这是我的问题:

  1. 为什么我们要将多个代理传递给 get()get() 如何使用它们?它会一一尝试吗?

  2. 给定一个代理 a.b.c.d:port,我怎么知道它的协议(protocol)类型?当您从 hidemyass.com 购买高级代理时,它仅以 ip:port 格式发送代理,不发送协议(protocol)类型。那么我应该将什么传递给 requests.get() 方法呢?

我有这些疑虑是因为我不太了解代理及其工作原理。因此,如果有人也对此进行解释,那就太好了。

最佳答案

  1. .get() 使用字典中的键与 URL 方案匹配的代理。也就是说,如果您访问“http://www.google.com/” ',将使用 key 为“http”的代理(在您的示例中为 http_proxy)。如果您访问“https://www.google.com/” ',将使用 key 为“https”的代理(在您的示例中为 https_proxy)。

  2. 简短的回答是任何付费代理都应该接受 HTTP 和 HTTPS URL。

    在实践中,请求使这变得复杂,它做了两件意想不到的事情。首先,如果您以问题中提供的形式使用代理地址(即 ip:port),Requests 将假定用于访问代理的协议(protocol)与您访问的协议(protocol)相同代理。也就是说,http_proxy 将在内部转换为 "http://10.10.1.10:3128",而 https_proxy 将转换为 "https//10.10.1.11:1080"。这通常不是您想要的,因此您应该始终明确并使用 scheme://ip:port 的形式。

    第二件事是 Requests 目前在通过代理的 HTTPS 方面存在真正的问题。一般来说,您应该假设它们不起作用,尽管实际上比这要复杂一些。

    这两个问题都可能在计划的 V2.0 版本中得到解决。

我已经 written a blog post关于请求中的代理,如果您想了解更多。

至于代理的工作原理,它们的目的是接受 HTTP 请求并将它们转发到目的地。通常它们的使用有两个原因之一:改变 HTTP 请求(并可能完全删除它们),或者缓存 HTTP 请求/响应。 Wikipedia有一篇很棒的文章可以帮助您入门。

关于python - 了解请求模块中的代理参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17781767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com