requests使用代理进行网络请求


requests支持HTTP、HTTPS、SOCKS等代理请求;

使用HTTP、HTTPS代理

如果要使用HTTP代理或HTTPS代理,你可以在任意请求方法中传入proxies参数来配置单个请求:

import requests

proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}

requests.get("http://example.org", proxies=proxies)

你也可以通过配置环境变量 HTTP_PROXY 和 HTTPS_PROXY 来配置代理,使得所有请求都使用代理:

export HTTP_PROXY="http://10.10.1.10:3128"
export HTTPS_PROXY="http://10.10.1.10:1080"
import requests
requests.get("http://example.org")

如果你的代理使用了HTTP Basic Auth,即使用了密码验证,应该使用 http://user:password@host/的语法,例:

proxies = {
    "http": "http://user:pass@10.10.1.10:3128/",
}

使用SOCKS代理

在requests 2.10.0 后支持了SOCKS协议的代理功能;这是一个可选功能,如果你要使用,需要进行安装:

pip3 install requests[socks]

安装好后即可使用,使用方法和HTTP代理一样:

proxies = {
    'http': 'socks5://user:pass@host:port',
    'https': 'socks5://user:pass@host:port'
}