requests库是Python中最流行的HTTP请求库之一,它提供了简单易用的API来发送HTTP请求。在实际应用中,我们经常需要通过代理服务器发送请求,以实现访问控制、匿名浏览或爬虫开发等目的。本文将详细介绍如何使用requests库配置HTTP代理。
基本代理配置****
requests库通过proxies参数支持HTTP代理配置,基本用法如下:
python
import requests | |
---|---|
proxies = { | |
'http': 'http://10.10.1.10:3128', | |
'https': 'http://10.10.1.10:1080', | |
} | |
response = requests.get('example.com', proxies=proxies) | |
print(response.text) |
代理认证****
如果代理服务器需要认证,可以在代理URL中包含用户名和密码:
python
proxies = { | |
---|---|
'http': 'http://username:password@10.10.1.10:3128/', | |
'https': 'http://username:password@10.10.1.10:1080/', | |
} | |
response = requests.get('example.com', proxies=proxies) |
或者使用HTTPProxyAuth进行更安全的认证:
python
from requests.auth import HTTPProxyAuth | |
---|---|
proxies = { | |
'http': 'http://10.10.1.10:3128', | |
'https': 'http://10.10.1.10:1080', | |
} | |
auth = HTTPProxyAuth('username', 'password') | |
response = requests.get('example.com', proxies=proxies, auth=auth) |
SOCKS代理支持****
requests库本身不支持SOCKS代理,但可以通过安装requests[socks]额外包来实现:
bash
pip install requests[socks] |
---|
然后配置SOCKS代理:
python
proxies = { | |
---|---|
'http': 'socks5://user:pass@host:port', | |
'https': 'socks5://user:pass@host:port' | |
} | |
response = requests.get('example.com', proxies=proxies) |
环境变量配置****
requests库会自动读取HTTP_PROXY和HTTPS_PROXY环境变量:
python
import os | |
---|---|
os.environ['HTTP_PROXY'] = 'http://10.10.1.10:3128' | |
os.environ['HTTPS_PROXY'] = 'http://10.10.1.10:1080' | |
# 现在所有请求都会自动使用代理 | |
response = requests.get('example.com') |
会话级代理配置****
对于需要多次请求的情况,可以使用Session对象配置代理:
python
session = requests.Session() | |
---|---|
session.proxies = proxies | |
response1 = session.get('example.com') | |
response2 = session.get('example.org') |
代理池实现****
在实际爬虫应用中,我们可能需要使用多个代理来实现轮换:
python
import random | |
---|---|
proxy_pool = [ | |
'http://proxy1:8080', | |
'http://proxy2:8080', | |
'http://proxy3:8080' | |
] | |
def get_random_proxy(): | |
return {'http': random.choice(proxy_pool)} | |
proxies = get_random_proxy() | |
response = requests.get('example.com', proxies=proxies) |
注意事项****
1. 代理服务器的稳定性会影响请求成功率,建议实现重试机制
2. 免费代理通常不可靠,考虑使用付费代理服务
3. 注意代理服务器的地理位置,可能影响访问速度
4. 某些网站会检测并阻止代理请求
通过以上方法,您可以灵活地在requests库中配置各种HTTP代理,满足不同的网络访问需求。