如何应对网站反爬虫策略?如何高效地爬大量数据
推荐于2016-04-16 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517184
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
一般有一下几种
一些常用的方法
IP代理
对于IP代理,各个语言的Native Request API都提供的IP代理响应的API, 需要解决的主要就是IP源的问题了.
网络上有廉价的代理IP(1元4000个左右), 我做过简单的测试, 100个IP中, 平均可用的在40-60左右, 访问延迟均在200以上.
网络有高质量的代理IP出售, 前提是你有渠道.
因为使用IP代理后, 延迟加大, 失败率提高, 所以可以将爬虫框架中将请求设计为异步, 将请求任务加入请求队列(RabbitMQ,Kafka,Redis), 调用成功后再进行回调处理, 失败则重新加入队列. 每次请求都从IP池中取IP, 如果请求失败则从IP池中删除该失效的IP.
Cookies
有一些网站是基于cookies做反爬虫, 这个基本上就是如 @朱添一 所说的, 维护一套Cookies池
注意研究下目标网站的cookies过期事件, 可以模拟浏览器, 定时生成cookies
限速访问
像开多线程,循环无休眠的的暴力爬取数据, 那真是分分钟被封IP的事, 限速访问实现起来也挺简单(用任务队列实现), 效率问题也不用担心, 一般结合IP代理已经可以很快地实现爬去目标内容.
一些坑
大批量爬取目标网站的内容后, 难免碰到红线触发对方的反爬虫机制. 所以适当的告警提示爬虫失效是很有必有的.
一般被反爬虫后, 请求返回的HttpCode为403的失败页面, 有些网站还会返回输入验证码(如豆瓣), 所以检测到403调用失败, 就发送报警, 可以结合一些监控框架, 如Metrics等, 设置短时间内, 告警到达一定阀值后, 给你发邮件,短信等.
当然, 单纯的检测403错误并不能解决所有情况. 有一些网站比较奇葩, 反爬虫后返回的页面仍然是200的(如去哪儿), 这时候往往爬虫任务会进入解析阶段, 解析失败是必然的. 应对这些办法, 也只能在解析失败的时候, 发送报警, 当告警短时间到达一定阀值, 再触发通知事件.
当然这个解决部分并不完美, 因为有时候, 因为网站结构改变, 而导致解析失败, 同样回触发告警. 而你并不能很简单地区分, 告警是由于哪个原因引起的.
一些常用的方法
IP代理
对于IP代理,各个语言的Native Request API都提供的IP代理响应的API, 需要解决的主要就是IP源的问题了.
网络上有廉价的代理IP(1元4000个左右), 我做过简单的测试, 100个IP中, 平均可用的在40-60左右, 访问延迟均在200以上.
网络有高质量的代理IP出售, 前提是你有渠道.
因为使用IP代理后, 延迟加大, 失败率提高, 所以可以将爬虫框架中将请求设计为异步, 将请求任务加入请求队列(RabbitMQ,Kafka,Redis), 调用成功后再进行回调处理, 失败则重新加入队列. 每次请求都从IP池中取IP, 如果请求失败则从IP池中删除该失效的IP.
Cookies
有一些网站是基于cookies做反爬虫, 这个基本上就是如 @朱添一 所说的, 维护一套Cookies池
注意研究下目标网站的cookies过期事件, 可以模拟浏览器, 定时生成cookies
限速访问
像开多线程,循环无休眠的的暴力爬取数据, 那真是分分钟被封IP的事, 限速访问实现起来也挺简单(用任务队列实现), 效率问题也不用担心, 一般结合IP代理已经可以很快地实现爬去目标内容.
一些坑
大批量爬取目标网站的内容后, 难免碰到红线触发对方的反爬虫机制. 所以适当的告警提示爬虫失效是很有必有的.
一般被反爬虫后, 请求返回的HttpCode为403的失败页面, 有些网站还会返回输入验证码(如豆瓣), 所以检测到403调用失败, 就发送报警, 可以结合一些监控框架, 如Metrics等, 设置短时间内, 告警到达一定阀值后, 给你发邮件,短信等.
当然, 单纯的检测403错误并不能解决所有情况. 有一些网站比较奇葩, 反爬虫后返回的页面仍然是200的(如去哪儿), 这时候往往爬虫任务会进入解析阶段, 解析失败是必然的. 应对这些办法, 也只能在解析失败的时候, 发送报警, 当告警短时间到达一定阀值, 再触发通知事件.
当然这个解决部分并不完美, 因为有时候, 因为网站结构改变, 而导致解析失败, 同样回触发告警. 而你并不能很简单地区分, 告警是由于哪个原因引起的.
广东轻亿云软件
2024-05-14 广告
2024-05-14 广告
广东轻亿云软件科技有限公司在软件开发领域深耕多年,积累了丰富的经验和技术实力。我们深知API接口在现代软件开发中的重要性,因此,我们与多家业界领先的API接口提供商保持着紧密的合作关系,确保我们的产品和服务能够充分利用这些接口,为用户提供更...
点击进入详情页
本回答由广东轻亿云软件提供
2020-09-05 · 千万IP库存,一键切换,无需配置,易操作
极光代理动态IP
极光代理动态IP是一款稳定高速的国内IP切换软件。 IP数量1000万+,全国线路,不限带宽,海量稳定IP秒连秒换 连接切换速度小于100ms每日切换不限次数,高质量流量出口。
向TA提问
关注
展开全部
由于互联网大数据越来越火热,应用Python进行数据收集变成了很多公司分析数据信息的方式,在使用爬虫多次爬取相同平台网站时,通常都会出现被平台网站的反爬虫措施给封禁ip的情况,以便解决这一问题,爬虫工作者通常都是用一下这几种方法:
爬虫代理避免爬虫封禁
1、减慢爬取速度,降低针对目标平台网站造成的压力,但会降低单位时间类的抓取量。
2、伪造cookies,若从浏览器中能够正常访问一个页面,则能够将浏览器中的cookies复制过来应用
3、伪造User-Agent,在请求头中把User-Agent设成浏览器中的User-Agent,来伪造浏览器访问。
4、应用代理商http代理IP,应用代理IP之后能够让爬虫伪装自己的真实IP。
针对python爬虫来说,有时候业务量繁重,分布式爬虫是最好的提升效率方式,而分布式爬虫又迫切需要数目众多的IP资源,这一点免费IP是满足不了的,并且免费代理通常不提供高匿名的代理IP,因此不提议大家应用免费的代理IP。以便节约前期成本而应用免费ip代理,最终只会因为免费ip的劣质而导致苦不堪言,反倒因小失大。
爬虫代理避免爬虫封禁
1、减慢爬取速度,降低针对目标平台网站造成的压力,但会降低单位时间类的抓取量。
2、伪造cookies,若从浏览器中能够正常访问一个页面,则能够将浏览器中的cookies复制过来应用
3、伪造User-Agent,在请求头中把User-Agent设成浏览器中的User-Agent,来伪造浏览器访问。
4、应用代理商http代理IP,应用代理IP之后能够让爬虫伪装自己的真实IP。
针对python爬虫来说,有时候业务量繁重,分布式爬虫是最好的提升效率方式,而分布式爬虫又迫切需要数目众多的IP资源,这一点免费IP是满足不了的,并且免费代理通常不提供高匿名的代理IP,因此不提议大家应用免费的代理IP。以便节约前期成本而应用免费ip代理,最终只会因为免费ip的劣质而导致苦不堪言,反倒因小失大。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-08-16
展开全部
常用办法是使用芝麻爬虫代理来解决ip限制问题,还有设置User-Agent伪装和轮换。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据信息变得越发重要的时候,我们能够从很多场所去获得数据源,但是要控制好数据收集的方式,今天介绍一下数据收集如何能够避免出现IP封停问题。
先说一下爬虫的分类,爬虫通常可分为三类:
1、传统爬虫:从一个或多个初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放进队列,直到满足系统的一定条件停止操作。
2、聚焦爬虫:工作流程极其复杂,要按照一定的网页分析算法过滤与主题内容不相干的链接,保存有用的连接并将其放进等待抓取的URL队列。随后,它将按照一定的搜索策略从队列中挑选下一步要抓取的网页URL,并重复以上过程,直到达到系统的某一条件时停止。此外,全部被网络爬虫抓取的网页就会被系统存贮,进行一定的分析、过滤,并建立索引,有利于以后的3、查询和检索;相对于聚焦网络爬虫而言,这一过程所得到的分析结果还有可能对以后的抓取过程给出反馈和指导。
爬虫如何解决IP封锁问题,本地按照程序抓取其他人网站内容,如遇封停IP,则可采用以下的方式处理:
1、技术处理:在程序中使用伪装术,不明目张胆地爬,使用代理,使用高级网络爬虫爬取数据信息
2、网络处理;封停IP后,本地IP不能访问该网站,但是设置了代理服务器后,浏览器能够访问该网站,可以在命令行加路由,通常格式为:routeaddIP地址mask子网掩码默认网关前提:把掩码要改成跟上面掩码一样。这个路由重新开机就没有了。能够routeadd-pIP地址mask子网掩码默认网关。这样的话,重新开机都在的。
使用ADSL拨号最大的优点就是:IP不固定,重启下路由就可以换一个新的IP了。而且ISP拥有大量的IP,会分配到和之前相同的IP机率很低。一旦你发现目前的IP被封锁,便能够立刻呼叫相关的API将网络断线并重新拨号,获得新的IP继续执行。
3、简单处理,随时动态更换IP;如果在公司封停IP,则可考虑重启路由,重新获取公网IP,自动更改IP地址反爬虫封锁,支持多线程。
先说一下爬虫的分类,爬虫通常可分为三类:
1、传统爬虫:从一个或多个初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放进队列,直到满足系统的一定条件停止操作。
2、聚焦爬虫:工作流程极其复杂,要按照一定的网页分析算法过滤与主题内容不相干的链接,保存有用的连接并将其放进等待抓取的URL队列。随后,它将按照一定的搜索策略从队列中挑选下一步要抓取的网页URL,并重复以上过程,直到达到系统的某一条件时停止。此外,全部被网络爬虫抓取的网页就会被系统存贮,进行一定的分析、过滤,并建立索引,有利于以后的3、查询和检索;相对于聚焦网络爬虫而言,这一过程所得到的分析结果还有可能对以后的抓取过程给出反馈和指导。
爬虫如何解决IP封锁问题,本地按照程序抓取其他人网站内容,如遇封停IP,则可采用以下的方式处理:
1、技术处理:在程序中使用伪装术,不明目张胆地爬,使用代理,使用高级网络爬虫爬取数据信息
2、网络处理;封停IP后,本地IP不能访问该网站,但是设置了代理服务器后,浏览器能够访问该网站,可以在命令行加路由,通常格式为:routeaddIP地址mask子网掩码默认网关前提:把掩码要改成跟上面掩码一样。这个路由重新开机就没有了。能够routeadd-pIP地址mask子网掩码默认网关。这样的话,重新开机都在的。
使用ADSL拨号最大的优点就是:IP不固定,重启下路由就可以换一个新的IP了。而且ISP拥有大量的IP,会分配到和之前相同的IP机率很低。一旦你发现目前的IP被封锁,便能够立刻呼叫相关的API将网络断线并重新拨号,获得新的IP继续执行。
3、简单处理,随时动态更换IP;如果在公司封停IP,则可考虑重启路由,重新获取公网IP,自动更改IP地址反爬虫封锁,支持多线程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2020-08-13 · 百度认证:江苏艾迪信息科技官方账号
IPIDEA全球HTTP
IPIDEA是国内领先的动态IP服务商,整合全球240+国家和地区真实住宅IP资源量9000万 我们提供7x24小时的全天候多语种咨询,真实住宅IP应用多种应用场景, 支持百万高并发
向TA提问
关注
展开全部
对于爬虫用户而言,网站的反爬机制可以说是他们的头号敌人。反爬机制是为了避免 爬虫爬取数据过于频繁,给服务器造成过重的负担导致服务器崩溃而设置的机制,它其实也有几种不同的方式,下面我们就来说说。
1、根据UA机制识别爬虫。
UA的全称是UserAgent,它是请求浏览器的身份标志,很多网站使用它来是识别爬虫的标志,如果访问请求的头部中没有带UA那么就会被判定为爬虫,但由于这种要针对这种反爬虫机制十分容易,即随机UA,所以这种反爬机制使用的很少。
2、根据访问频率识别爬虫。
爬虫为了保证效率,往往会在很短的时间内多次访问目标网站,所以可以根据单个IP访问的频率来判断是否为爬虫。并且,这种反爬方式比较难以被反反爬机制反制,只有通过更换代理IP来保证效率,IPIDEA提供高匿稳定的IP同时更注重用户隐私的保护,保障用户的信息安全。
3、通过Cookie和验证码识别爬虫。
Cookie就是指会员制的账号密码登陆验证,这就可以根据限制单账号抓取频率来限制爬虫抓取,而验证码完全是随机的,爬虫脚本无法正确识别,同样可以限制爬虫程序。
1、根据UA机制识别爬虫。
UA的全称是UserAgent,它是请求浏览器的身份标志,很多网站使用它来是识别爬虫的标志,如果访问请求的头部中没有带UA那么就会被判定为爬虫,但由于这种要针对这种反爬虫机制十分容易,即随机UA,所以这种反爬机制使用的很少。
2、根据访问频率识别爬虫。
爬虫为了保证效率,往往会在很短的时间内多次访问目标网站,所以可以根据单个IP访问的频率来判断是否为爬虫。并且,这种反爬方式比较难以被反反爬机制反制,只有通过更换代理IP来保证效率,IPIDEA提供高匿稳定的IP同时更注重用户隐私的保护,保障用户的信息安全。
3、通过Cookie和验证码识别爬虫。
Cookie就是指会员制的账号密码登陆验证,这就可以根据限制单账号抓取频率来限制爬虫抓取,而验证码完全是随机的,爬虫脚本无法正确识别,同样可以限制爬虫程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询