爬虫遇到 HTTPSConnectionPool(host=‘xxxxx‘, port=443) 解决思路

1、原因  SSL 证书报错

http连接太多没有关闭导致的。
经过一番查询,发现该错误是因为如下:
http的连接数超过最大限制,默认的情况下连接是Keep-alive的,所以这就导致了服务器保持了太多连接而不能再新建连接。

    1、ip被封
    2、程序请求速度过快。

2、解决方式

(1)time.sleep()

(2)关闭 SSL 验证   verify=False

response = requests.get(fpath_or_url,headers=headers,stream=True, verify=False)

(3) requests默认是keep-alive的,可能没有释放,加参数 headers={'Connection':'close'}

# TODO ssl证书报错,参数 verify=False,同时,requests默认是keep-alive的,可能没有释放,加参数                 
            sess = requests.Session()
            sess.mount('http://', HTTPAdapter(max_retries=3)) 
            sess.mount('https://', HTTPAdapter(max_retries=3))     
            sess.keep_alive = False # 关闭多余连接
            
            text = requests.get(self.target_img_url, headers=headers, stream=True, verify=False, timeout=(5,5)) #  connect 和 read 二者的 timeout,所以是一个数组
            
            with open(img_files_path, 'wb') as file:
                for i in text.iter_content(1024 * 10):
                    file.write(i)
                    
            text.close() # 关闭,很重要,确保不要过多的链接

(4) 改变重连次数 requests.adapters.DEFAULT_RETRIES = 5

        try:
            headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
            }
            # TODO 增加连接重试次数(一共4次链接)
            sess = requests.Session()
            sess.mount('http://', HTTPAdapter(max_retries=3)) 
            sess.mount('https://', HTTPAdapter(max_retries=3))     
            sess.keep_alive = False # 关闭多余连接
            
            text = requests.get(self.target_img_url, headers=headers, stream=True, verify=False, timeout=(5,5)) # connect 和 read 二者的 timeout,所以是一个数组
             
            with open(img_files_path, 'wb') as file:
                for i in text.iter_content(1024 * 10):
                    file.write(i)
                    
            text.close() # 关闭,很重要,确保不要过多的链接
 
        except Exception as e:
            print(e,self.target_img_url)

(5) 其他 忽略警告信息

3、Reference

       python 爬虫:https; HTTPSConnectionPool(host='z.jd.com', port=443)

 

 

解决爬虫IP封控问题的思路可以从以下几个方面考虑: 1. 使用高质量的爬虫IP:选择稳定、高匿名度的爬虫IP服务提供商,确保IP的可用性和稳定性。这样可以减少IP被封的风险。 2. 控制访问频率:合理控制爬虫的访问频率,避免短时间内并发过大或访问频率过高,以免触发目标网站的反爬策略。可以通过设置访问间隔、随机化访问时间等方式来降低被封的概率。 3. 使用代理池:建立一个代理IP池,通过轮询使用不同的IP地址进行爬取,避免频繁使用同一个IP地址,减少被封的风险。 4. 使用多个账号:如果目标网站对单个账号的访问频率有限制,可以考虑使用多个账号进行轮流访问,以分散访问压力。 5. 监测IP可用性:定期检测爬虫IP的可用性,及时发现失效的IP并进行替换,确保爬虫的正常运行。 总之,解决爬虫IP封控问题需要综合考虑IP质量、访问频率、代理池、账号管理等因素,以提高爬虫的稳定性和可用性。 #### 引用[.reference_title] - *1* *2* *3* [使用爬虫ip遇到问题如何处理?](https://blog.csdn.net/weixin_44617651/article/details/127486372)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值