requests的代理的设置

当爬虫访问次数过多导致IP被封时,可以利用requests库设置代理来规避。requests的代理设置简单,只需构造代理字典并传入proxies参数。如果代理需要认证,可以在代理URL中加入用户名和密码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在爬虫运行的时候,有时候会出现403 Forbidden的情况,也就是我们的访问次数超过了目标网站设置的阈值,这样它就会直接拒绝服务,返回一些错误信息,也就是所谓的封IP。


接下来我们尝试基于requests的代理的设置:

requests 的代理设置比 urllib 简单很多,它只需要构造代理字典,然后通过 proxies 参数即可,而不需要重新构建 Opener。

代码如下:
import requests
proxy = '113.194.28.190:9999'	

proxies = {
	        'http': 'http://' + proxy,
	        'https': 'https://' + proxy 
		  }
try:
    response = requests.get('http://httpbin.org/get', proxies=proxies)
    print(response.text)
except requests.exceptions.ConnectionError as e:
    print('Error', e.args)

Output:

我们可以看到运行结果的 origin 是代理的IP,这证明代理已经设置成功。


如果代理需要认证,在代理的前面加上用户名和密码即可,即代理的写法变成如下所示:

proxy = 'username:password@113.194.28.190:9999'

参考资料:《Python3网络爬虫开发实战》——崔庆才

当使用Pythonrequests库进行网络请求时,如果遇到`ProxyError('Cannot connect to proxy.')`这样的错误,通常是由于以下几个原因: 1. **代理服务器配置不正确**:确认代理地址、端口、用户名和密码是否正确输入到requestsproxy参数中。例如,如果你的代理是HTTP代理,可以尝试: ```python import requests proxies = { 'http': 'http://username:password@proxy_host:proxy_port', 'https': 'http://username:password@proxy_host:proxy_port', # 如果需要HTTPS代理 } response = requests.get('http://example.com', proxies=proxies) ``` 2. **网络连接问题**:代理服务器本身可能不可达或暂时无法访问。检查代理服务器的状态,确保它正在运行并且可以从客户端机器上正常通信。 3. **防火墙或安全策略**:某些环境可能阻止了对代理的访问。请检查公司的防火墙设置或者本地网络规则是否允许通过该代理。 4. **SSL/TLS证书问题**:如果代理服务器使用自签发的证书,requests可能会报错。在这种情况下,可以尝试关闭SSL验证: ```python requests.get('http://example.com', proxies=proxies, verify=False) ``` 但请注意,这会降低安全性,因为你的程序将不再验证服务器的身份。 5. **权限限制**:有些情况下,你的用户账户可能没有足够的权限访问代理。请确认你的账户是否有访问代理的权限。 处理这类问题时,应首先确定问题出在哪里,然后针对具体情况调整代理设置或寻求网络管理员的帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值