当前位置: 首页 > ai >正文

python爬虫ip封禁应对办法

目录

一、背景现象

二、准备工作

三、代码实现


一、背景现象

        最近在做爬虫项目时,爬取的网站,如果发送请求太频繁的话,对方网站会先是响应缓慢,最后是封禁一段时间。一直是拒绝连接,导致程序无法正常预期的爬取数据。针对这种情况,可以使用代理ip请求来规避,同时增加一些随机等待时间(如果性能要求不高)。

二、准备工作

        若要用代理ip去请求,那首先要有一个或多个代理ip。代理ip的获取可以寻找专门搜集提供代理ip的网站(如果有私人或公用的代理ip就更好了),直接使用即可。

        这里注意一般提供的代理ip会有匿名程度,有透明、普匿、高匿等。如果你使用了匿名程度为透明的ip去请求,那么代理ip方会看到你用人家的ip干了什么,就是说你的行为透明化对于代理ip提供方。相反高匿,你的行为不会对代理ip提供方公开。

三、代码实现

        基本思路就是使用代理ip进行请求,获取请求响应返回。使用request库,配置请求代理ip即可。

import requests
import random
from retrying import retry# 代理ip
proxy_list = ['http://ip:port','http://ip:port'
]reqSession = requests.Session()
# # 也可以直接设置全局
# reqSession.proxies = {
#     'http': 'http://121.37.195.205:80',
#     'https': 'http://121.37.195.205:80',
# }@retry(stop_max_attempt_number=10, wait_random_min=10000, wait_random_max=50000)
def get_detail_data(page_url):# 随机选取一个ip使用,避免一直使用一个ip,导致被封禁。one_proxy = random.choice(proxy_list)proxy = {'http': one_proxy,'https:': one_proxy}resPage = reqSession.get(page_url, headers=headers, proxies=proxy, timeout=100)if resPage.status_code != 200:raisereturn resPage.text

四、总结

        虽然现在可以解决ip封禁的问题,但是代码还是有一些隐形问题的。后续如果你使用的代理ip若失效了,但你不知道或没有及时更换的情况。解决办法是将代理ip存储到数据库,另外写一个爬虫程序去收集代理ip,更换数据库里的代理ip。业务爬虫程序读取数据库里的代理ip去进行请求。同时可以设置程序异常发送邮件,这样也可以及时定位问题。

http://www.xdnf.cn/news/13702.html

相关文章:

  • Word 文件转md文件 在 Word 中没有直接将文档另存为 Markdown(.md)格式的选项,但你可以使用一些工具或手动转换来实现
  • spring系列---拦截器
  • NLP基础与词嵌入:让AI理解文字(superior哥深度学习系列第13期)
  • 计算机组成原理-主存储器
  • RedHat主机配置日志留存策略:从4周延长至6个月
  • 预训练模型适应下游任务?模型参数Freezing 与 微调 !
  • 基于Jenkins与Kubernetes的系统化变更管理实践
  • 《前端面试题:call、apply、bind 区别》
  • 1.sql连接语句
  • 软件测试相关问题
  • 柑橘检测模型
  • 直白话 OAuth 2 流程
  • langchain runnables 概念指南
  • 2025年硬件实习/秋招面试准备
  • 小熊派开发板显示图片
  • 机器人导航中的高程图 vs 高度筛选障碍物点云投影 —— 如何高效处理避障问题?
  • Oracle 条件索引 case when 报错解决方案(APP)
  • HTTP 网络协议演进过程
  • 【Docker基础】Docker核心概念:容器(Container)与镜像(Image)的区别与联系
  • Vue3 计算属性 computed
  • 装饰器模式(Decorator Pattern)
  • 【深尚想】M74VHC1GT08DTT1G逻辑芯片安森美ON 工业/物联网首选 电子元器件解析
  • 第29节 Node.js Query Strings
  • Kotlin 中的继承/实现
  • 2025-06-13【api】阿里百炼api调用方法
  • HarmonysOS 模块化设计理念
  • Jsoup解析商品详情时,有哪些常见的标签和属性?
  • 网络安全之CTF专题赛RE题解
  • Python训练营打卡Day49
  • 在QtCreator中使用GitHubCopilot