爬虫使用代理出现的问题

requests.exceptions.ProxyError:HTTPSConnectionPool(host=‘www.baidu.com’, port=443): Max retries exceeded with url: / (Caused by ProxyError(‘Cannot connect to proxy.’, OSError(‘Tunnel connection failed: 400 Bad Request’)))

刚学习爬虫代理的时候,测试了下面代码。IP地址是在网上找的免费代理

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

输出也很正常:

D:\software\python.exe E:/code/pycharm/py_project/python3/9.1-3.py
{
  "args": {}, 
  "headers": {
    "Host": "httpbin.org", 
    "User-Agent": "lua-resty-http/0.10 (Lua) ngx_lua/10007"
  }, 
  "origin": "222.66.127.248, 222.66.127.248", 
  "url": "https://httpbin.org/get"
}

接着想着用代理的IP地址进行爬虫,示例如下

import requests
url = 'https://www.baidu.com'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
proxy = '222.66.94.130:80'
proxies = {
    'http': 'http://' + proxy,
    'https': 'https://' +proxy
}
response = requests.get(url=url, proxies=proxies, headers=headers)
print(response.status_code)

结果
requests.exceptions.ProxyError:HTTPSConnectionPool(host=‘www.baidu.com’, port=443): Max retries exceeded with url: / (Caused by ProxyError(‘Cannot connect to proxy.’, OSError(‘Tunnel connection failed: 400 Bad Request’)))
在这里,我原本以来这个IP地址没有问题,结果就在网上搜集各种出错来源
1、http连接太多没有关闭导致的
2、.访问次数频繁,被禁止访问
其实找来找去最后发现还是这个IP地址的问题。。。(真的便宜没好货)
后面多试了几个高匿IP地址,
比如:proxy = ‘111.231.92.21:8888’
结果发现就没有报错了

这里再科普下透明代理,普通匿名代理和高匿代理
透明代理:可以说是最没用的IP代理,在你访问的时候,对方服务器知道你使用了代理服务器,也知道你的真实IP地址。
普通匿名代理:比透明代理稍微好一点,访问的时候对方知道你使用了代理,但是一般不清楚你真实IP地址(有一定几率能追查到)。
高匿代理:这个就比较高级了,不仅能隐藏自身IP地址,还能以假乱真,让服务器以为代理IP地址就是你的真实IP地址。

各位有兴趣还可以用我给的第一个程序去验证,可以发现高匿IP地址能隐藏客户端真实IP地址。

参考:
1、http://www.mamicode.com/info-detail-2109743.html
2、https://blog.csdn.net/wdh315172/article/details/80491668
3、python 3 网络爬虫开发实战(崔庆才)

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python爬虫使用代理时可以通过以下步骤来实现。 首先,我们需要安装Python的请求库,比如requests或者urllib库,以便在爬取网页时发送请求。同时,我们还需要安装相应的代理库,比如selenium或者pyppeteer,以便在爬取时使用代理使用requests库的话,可以使用如下代码来设置代理: ``` import requests proxies = { 'http': 'http://127.0.0.1:8080', 'https': 'https://127.0.0.1:8080' } response = requests.get(url, proxies=proxies) ``` 其中,`http`和`https`指定了不同协议下的代理地址和端口号。你可以将上述代码放入你的爬虫代码中的合适位置,然后替换代理地址和端口号为你所使用代理地址和端口号。然后,通过`requests.get()`方法来发送请求。 如果使用selenium库的话,可以使用如下代码来设置代理: ``` from selenium import webdriver proxy_server = "127.0.0.1:8080" options = webdriver.ChromeOptions() options.add_argument('--proxy-server=%s' % proxy_server) driver = webdriver.Chrome(chrome_options=options) ``` 其中,`proxy_server`指定了代理地址和端口号。你可以将上述代码放入你的爬虫代码中的合适位置,然后替换代理地址和端口号为你所使用代理地址和端口号。然后,通过`webdriver.Chrome()`方法来创建一个带代理设置的浏览器实例,从而实现使用代理来进行网页爬取。 总结起来,Python爬虫使用代理的方法主要就是通过设置requests库或者selenium库的相应参数来指定代理地址和端口号,从而实现在爬取时使用代理

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值