小能豆

使用 Python 'Requests' 模块的代理

javascript

这只是关于Python优秀的Requests模块的一个简短、简单的介绍。

我在文档中似乎找不到变量“proxies”应该包含什么。当我向它发送一个带有标准“IP:PORT”值的字典时,它拒绝了它并要求输入 2 个值。所以,我猜(因为文档中似乎没有涵盖这一点)第一个值是 ip,第二个值是端口?

文档仅提到这一点:

proxies – (可选)将协议映射到代理的 URL 的字典。

所以我尝试了这个…我应该做什么?

proxy = { ip: port}

在将它们放入字典之前,我应该将它们转换为某种类型吗?

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

阅读 47

收藏
2024-07-09

共1个答案

小能豆

requests 模块中,proxies 参数应该是一个字典,将协议(如 ‘http’ 和 ‘https’)映射到完整的代理 URL。代理 URL 应该包含协议、IP 地址和端口。

以下是如何正确设置和使用 proxies 参数的示例:

proxies 的正确格式

proxies 字典应该将协议映射到包含完整代理 URL 的字符串,格式为 protocol://IP:PORT。例如:

import requests

# 定义代理字典
proxies = {
    'http': 'http://123.123.123.123:8080',
    'https': 'https://123.123.123.123:8080'
}

# 使用代理发起请求
url = 'http://example.com'
response = requests.get(url, proxies=proxies)

# 打印响应文本
print(response.text)

解释

  1. proxies 字典:

    • 键是协议(’http’ 和 ‘https’)。
    • 值是完整的代理 URL,包括协议、IP 地址和端口。
  2. 发起请求:

    • proxies 字典传递给 requests.get 函数。

带有认证的代理

如果代理需要认证,可以在代理 URL 中包含用户名和密码:

proxies = {
    'http': 'http://username:password@123.123.123.123:8080',
    'https': 'https://username:password@123.123.123.123:8080'
}

url = 'http://example.com'
response = requests.get(url, proxies=proxies)
print(response.text)

示例:从单独的 IP 和端口构建 URL

如果你有单独的 IP 和端口,可以像这样构建代理 URL:

ip = '123.123.123.123'
port = '8080'
proxy_url = f'http://{ip}:{port}'

proxies = {
    'http': proxy_url,
    'https': proxy_url
}

url = 'http://example.com'
response = requests.get(url, proxies=proxies)
print(response.text)

总结

  • proxies 字典应该将协议映射到完整的代理 URL。
  • 代理 URL 应该格式化为 protocol://IP:PORT
  • 对于需要认证的代理,可以在 URL 中包含用户名和密码。
  • 不需要将 IP 和端口转换为其他类型,只需将它们正确格式化为字符串即可。
2024-07-09