❶ 如何防止网站被爬虫爬取的几种办法
相较于爬虫技术,反爬虫实际上更复杂。目前许多互联网企业都会花大力气进行“反爬虫”,网络爬虫不但会占据过多的网站流量,导致有真正需求的用户没法进入网站,另外也有可能会导致网站关键数据的外泄等现象。网络爬虫遍布互联网的各个角落,因此网络爬虫有好处也有坏处,接下来介绍一下和网络爬虫一同诞生的反爬虫技术,如何才能防止别人爬取自己的网站?
1、基于程序本身去防止爬取:作为爬虫程序,爬取行为是对页面的源文件爬取,如爬取静态页面的html代码,可以用jquery去模仿写html,这种方法伪装的页面就很难被爬取了,不过这种方法对程序员的要求很高。
2、基于iptables和shell脚本:可以对nginx的access.log进行策略定义,例如定义在1分钟内并发连接数超过30个ip为非法,如ip不在白名单内,则加入iptables策略封掉,当然这种的缺点是会有“误伤”,策略细粒度越小就会有更多的“误伤”,细粒度大就会使效果变差,另外还有类似的第三方工具fail2ban,利用做filter和actor对一些有危害的操作记录或是封ip。但是对于某个特定的爬虫地址(例如网易、有道)的爬取行为拒绝也很难准确做到,因为你无法准确知道这些特定的爬虫ip地址。注意:建议不要用封ip条目的方式,iptables列表长度是65535时就会封满,服务器也就会死机。
3.使用robots.txt文件:例如阻止所有的爬虫爬取,但是这种效果不是很明显。
User-agent: *
Disallow: /
4.使用nginx的自带功能:通过对httpuseragent阻塞来实现,包括GET/POST方式的请求,以nginx为例,具体步骤如下:
编辑nginx.conf
拒绝以wget方式的httpuseragent,增加如下内容
## Block http user agent - wget ##
if ($http_user_agent ~* (Wget) ) {
return 403;
}
## Block Software download user agents ##
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 403;
平滑启动
# /usr/local/nginx/sbin/nginx -s reload
如何拒绝多种httpuseragent,内容如下:
if ($http_user_agent ~ (agent1|agent2|Foo|Wget|Catall Spider|AcoiRobot) ) {
return 403;
}
大小写敏感匹配
### 大小写敏感http user agent拒绝###
if ($http_user_agent ~ (Catall Spider|AcoiRobot) ) {
return 403;
}
### 大小写不敏感http user agent拒绝###
if ($http_user_agent ~* (foo|bar) ) {
return 403;
}
注意语法:~*表示是大小写不敏感,~表示是大小写敏感
}
以上就是预防网站信息被别人爬取的一些方法,大量的爬取行为会对web服务器的性能有影响,所以一定要注重反爬虫措施。
❷ 如何应付不知名的爬虫骚扰
一、手工识别和拒绝爬虫的访问
有相当多的爬虫对网站会造成非常高的负载,因此识别爬虫的来源IP是很容易的事情。最简单的办法就是用netstat检查80端口的连接:
C代码 netstat -nt | grep youhostip:80 | awk '{print $5}' | awk -F":" '{print $1}'| sort | uniq -c | sort -r -n netstat -nt | grep youhostip:80 | awk '{print $5}' | awk -F":" '{print $1}'| sort | uniq -c | sort -r -n
这行shell可以按照80端口连接数量对来源IP进行排序,这样可以直观的判断出来网页爬虫。一般来说爬虫的并发连接非常高。
如果使用lighttpd做Web Server,那么就更简单了。lighttpd的mod_status提供了非常直观的并发连接的信息,包括每个连接的来源IP,访问的URL,连接状态和连接时间等信息,只要检查那些处于handle-request状态的高并发IP就可以很快确定爬虫的来源IP了。
拒绝爬虫请求既可以通过内核防火墙来拒绝,也可以在web server拒绝,比方说用iptables拒绝:
C代码 iptables -A INPUT -i eth0 -j DROP -p tcp --dport 80 -s 84.80.46.0/24 iptables -A INPUT -i eth0 -j DROP -p tcp --dport 80 -s 84.80.46.0/24
直接封锁爬虫所在的C网段地址。这是因为一般爬虫都是运行在托管机房里面,可能在一个C段里面的多台服务器上面都有爬虫,而这个C段不可能是用户宽带上网,封锁C段可以很大程度上解决问题。
有些人提出一种脑残的观点,说我要惩罚这些爬虫。我专门在网页里面设计动态循环链接页面,让爬虫掉进陷阱,死循环爬不出来,其实根本用不着设置陷阱,弱智爬虫对正常网页自己就爬不出来,这样做多此一举不说,而且会让真正的搜索引擎降低你的网页排名。而且运行一个爬虫根本不消耗什么机器资源,相反,真正宝贵的是你的服务器CPU资源和服务器带宽,简单的拒绝掉爬虫的请求是反爬虫最有效的策略。
二、通过识别爬虫的User-Agent信息来拒绝爬虫
有很多爬虫并不会以很高的并发连接爬取,一般不容易暴露自己;有些爬虫的来源IP分布很广,很难简单的通过封锁IP段地址来解决问题;另外还有很多各种各样的小爬虫,它们在尝试Google以外创新的搜索方式,每个爬虫每天爬取几万的网页,几十个爬虫加起来每天就能消耗掉上百万动态请求的资源,由于每个小爬虫单独的爬取量都很低,所以你很难把它从每天海量的访问IP地址当中把它准确的挖出来。
这种情况下我们可以通过爬虫的User-Agent信息来识别。每个爬虫在爬取网页的时候,会声明自己的User-Agent信息,因此我们就可以通过记录和分析User-Agent信息来挖掘和封锁爬虫。我们需要记录每个请求的User-Agent信息,对于Rails来说我们可以简单的在app/controllers/application.rb里面添加一个全局的before_filter,来记录每个请求的User-Agent信息:
Ruby代码 logger.info "HTTP_USER_AGENT #{request.env["HTTP_USER_AGENT"]}" logger.info "HTTP_USER_AGENT #{request.env["HTTP_USER_AGENT"]}"
然后统计每天的proction.log,抽取User-Agent信息,找出访问量最大的那些User-Agent。要注意的是我们只关注那些爬虫的User-Agent信息,而不是真正浏览器User-Agent,所以还要排除掉浏览器User-Agent,要做到这一点仅仅需要一行shell:
Ruby代码 grep HTTP_USER_AGENT proction.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko' | sort | uniq -c | sort -r -n | head -n 100 > bot.log grep HTTP_USER_AGENT proction.log | grep -v -E 'MSIE|Firefox|Chrome|Opera|Safari|Gecko' | sort | uniq -c | sort -r -n | head -n 100 > bot.log
统计结果类似这样:
C代码 57335 HTTP_USER_AGENT Baispider+(+ http://www..com/search/spider.htm)56639 HTTP_USER_AGENT Mozilla/5.0 (compatible; Googlebot/2.1; + http://www.google.com/bot.html)42610 HTTP_USER_AGENT Mediapartners-Google 19131 HTTP_USER_AGENT msnbot/2.0b (+ http://search.msn.com/msnbot.htm)57335 HTTP_USER_AGENT Baispider+(+ http://www..com/search/spider.htm) 56639 HTTP_USER_AGENT Mozilla/5.0 (compatible; Googlebot/2.1; + http://www.google.com/bot.html) 42610 HTTP_USER_AGENT Mediapartners-Google 19131 HTTP_USER_AGENT msnbot/2.0b (+ http://search.msn.com/msnbot.htm)
从日志就可以直观的看出每个爬虫的请求次数。要根据User-Agent信息来封锁爬虫是件很容易的事情,lighttpd配置如下:
C代码 $HTTP["useragent"] =~ "qihoobot|^Java|Commons-HttpClient|Wget|^PHP|Ruby|Python" { url.rewrite = ( "^/(.*)" => "/crawler.html" ) } $HTTP["useragent"] =~ "qihoobot|^Java|Commons-HttpClient|Wget|^PHP|Ruby|Python" { url.rewrite = ( "^/(.*)" => "/crawler.html" ) }
使用这种方式来封锁爬虫虽然简单但是非常有效,除了封锁特定的爬虫,还可以封锁常用的编程语言和HTTP类库的User-Agent信息,这样就可以避免很多无谓的程序员用来练手的爬虫程序对网站的骚扰。
还有一种比较常见的情况,就是某个搜索引擎的爬虫对网站爬取频率过高,但是搜索引擎给网站带来了很多流量,我们并不希望简单的封锁爬虫,仅仅是希望降低爬虫的请求频率,减轻爬虫对网站造成的负载,那么我们可以这样做:
C代码 $HTTP["user-agent"] =~ "Baispider+" { connection.delay-seconds = 10 } $HTTP["user-agent"] =~ "Baispider+" { connection.delay-seconds = 10 }
对网络的爬虫请求延迟10秒钟再进行处理,这样就可以有效降低爬虫对网站的负载了。
三、通过网站流量统计系统和日志分析来识别爬虫
有些爬虫喜欢修改User-Agent信息来伪装自己,把自己伪装成一个真实浏览器的User-Agent信息,让你无法有效的识别。这种情况下我们可以通过网站流量系统记录的真实用户访问IP来进行识别。
主流的网站流量统计系统不外乎两种实现策略:一种策略是在网页里面嵌入一段js,这段js会向特定的统计服务器发送请求的方式记录访问量;另一种策略是直接分析服务器日志,来统计网站访问量。在理想的情况下,嵌入js的方式统计的网站流量应该高于分析服务器日志,这是因为用户浏览器会有缓存,不一定每次真实用户访问都会触发服务器的处理。但实际情况是,分析服务器日志得到的网站访问量远远高于嵌入js方式,极端情况下,甚至要高出10倍以上。
现在很多网站喜欢采用awstats来分析服务器日志,来计算网站的访问量,但是当他们一旦采用Google Analytics来统计网站流量的时候,却发现GA统计的流量远远低于awstats,为什么GA和awstats统计会有这么大差异呢?罪魁祸首就是把自己伪装成浏览器的网络爬虫。这种情况下awstats无法有效的识别了,所以awstats的统计数据会虚高。
其实作为一个网站来说,如果希望了解自己的网站真实访问量,希望精确了解网站每个频道的访问量和访问用户,应该用页面里面嵌入js的方式来开发自己的网站流量统计系统。自己做一个网站流量统计系统是件很简单的事情,写段服务器程序响应客户段js的请求,分析和识别请求然后写日志的同时做后台的异步统计就搞定了。
通过流量统计系统得到的用户IP基本是真实的用户访问,因为一般情况下爬虫是无法执行网页里面的js代码片段的。所以我们可以拿流量统计系统记录的IP和服务器程序日志记录的IP地址进行比较,如果服务器日志里面某个IP发起了大量的请求,在流量统计系统里面却根本找不到,或者即使找得到,可访问量却只有寥寥几个,那么无疑就是一个网络爬虫。
分析服务器日志统计访问最多的IP地址段一行shell就可以了:
C代码 grep Processing proction.log | awk '{print $4}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200 > stat_ip.log grep Processing proction.log | awk '{print $4}' | awk -F'.' '{print $1"."$2"."$3".0"}' | sort | uniq -c | sort -r -n | head -n 200 > stat_ip.log
然后把统计结果和流量统计系统记录的IP地址进行对比,排除真实用户访问IP,再排除我们希望放行的网页爬虫,比方Google,网络,微软msn爬虫等等。最后的分析结果就就得到了爬虫的IP地址了。以下代码段是个简单的实现示意:
Ruby代码 whitelist = [] IO.foreach("#{RAILS_ROOT}/lib/whitelist.txt") { |line| whitelist << line.split[0].strip if line } realiplist = [] IO.foreach("#{RAILS_ROOT}/log/visit_ip.log") { |line| realiplist << line.strip if line } iplist = [] IO.foreach("#{RAILS_ROOT}/log/stat_ip.log") do |line| ip = line.split[1].strip iplist << ip if line.split[0].to_i > 3000 && !whitelist.include?(ip) && !realiplist.include?(ip) end Report.deliver_crawler(iplist) whitelist = [] IO.foreach("#{RAILS_ROOT}/lib/whitelist.txt") { |line| whitelist << line.split[0].strip if line } realiplist = [] IO.foreach("#{RAILS_ROOT}/log/visit_ip.log") { |line| realiplist << line.strip if line } iplist = [] IO.foreach("#{RAILS_ROOT}/log/stat_ip.log") do |line| ip = line.split[1].strip iplist << ip if line.split[0].to_i > 3000 && !whitelist.include?(ip) && !realiplist.include?(ip) end Report.deliver_crawler(iplist)
分析服务器日志里面请求次数超过3000次的IP地址段,排除白名单地址和真实访问IP地址,最后得到的就是爬虫IP了,然后可以发送邮件通知管理员进行相应的处理。
四、网站的实时反爬虫防火墙实现策略
通过分析日志的方式来识别网页爬虫不是一个实时的反爬虫策略。如果一个爬虫非要针对你的网站进行处心积虑的爬取,那么他可能会采用分布式爬取策略,比方说寻找几百上千个国外的代理服务器疯狂的爬取你的网站,从而导致网站无法访问,那么你再分析日志是不可能及时解决问题的。所以必须采取实时反爬虫策略,要能够动态的实时识别和封锁爬虫的访问。
要自己编写一个这样的实时反爬虫系统其实也很简单。比方说我们可以用memcached来做访问计数器,记录每个IP的访问频度,在单位时间之内,如果访问频率超过一个阀值,我们就认为这个IP很可能有问题,那么我们就可以返回一个验证码页面,要求用户填写验证码。如果是爬虫的话,当然不可能填写验证码,所以就被拒掉了,这样很简单就解决了爬虫问题。
用memcache记录每个IP访问计数,单位时间内超过阀值就让用户填写验证码,用Rails编写的示例代码如下:
Ruby代码 ip_counter = Rails.cache.increment(request.remote_ip) if !ip_counter Rails.cache.write(request.remote_ip, 1, :expires_in => 30.minutes) elsif ip_counter > 2000 render :template => 'test', :status => 401 and return false end ip_counter = Rails.cache.increment(request.remote_ip) if !ip_counter Rails.cache.write(request.remote_ip, 1, :expires_in => 30.minutes) elsif ip_counter > 2000 render :template => 'test', :status => 401 and return false end
这段程序只是最简单的示例,实际的代码实现我们还会添加很多判断,比方说我们可能要排除白名单IP地址段,要允许特定的User-Agent通过,要针对登录用户和非登录用户,针对有无referer地址采取不同的阀值和计数加速器等等。
此外如果分布式爬虫爬取频率过高的话,过期就允许爬虫再次访问还是会对服务器造成很大的压力,因此我们可以添加一条策略:针对要求用户填写验证码的IP地址,如果该IP地址短时间内继续不停的请求,则判断为爬虫,加入黑名单,后续请求全部拒绝掉。为此,示例代码可以改进一下:
Ruby代码 before_filter :ip_firewall, :except => :test def ip_firewall render :file => "#{RAILS_ROOT}/public/403.html", :status => 403 if BlackList.include?(ip_sec) end before_filter :ip_firewall, :except => :test def ip_firewall render :file => "#{RAILS_ROOT}/public/403.html", :status => 403 if BlackList.include?(ip_sec) end
我们可以定义一个全局的过滤器,对所有请求进行过滤,出现在黑名单的IP地址一律拒绝。对非黑名单的IP地址再进行计数和统计:
Ruby代码 ip_counter = Rails.cache.increment(request.remote_ip) if !ip_counter Rails.cache.write(request.remote_ip, 1, :expires_in => 30.minutes) elsif ip_counter > 2000 crawler_counter = Rails.cache.increment("crawler/#{request.remote_ip}") if !crawler_counter Rails.cache.write("crawler/#{request.remote_ip}", 1, :expires_in => 10.minutes) elsif crawler_counter > 50 BlackList.add(ip_sec) render :file => "#{RAILS_ROOT}/public/403.html", :status => 403 and return false end render :template => 'test', :status => 401 and return false end ip_counter = Rails.cache.increment(request.remote_ip) if !ip_counter Rails.cache.write(request.remote_ip, 1, :expires_in => 30.minutes) elsif ip_counter > 2000 crawler_counter = Rails.cache.increment("crawler/#{request.remote_ip}") if !crawler_counter Rails.cache.write("crawler/#{request.remote_ip}", 1, :expires_in => 10.minutes) elsif crawler_counter > 50 BlackList.add(ip_sec) render :file => "#{RAILS_ROOT}/public/403.html", :status => 403 and return false end render :template => 'test', :status => 401 and return false end
如果某个IP地址单位时间内访问频率超过阀值,再增加一个计数器,跟踪他会不会立刻填写验证码,如果他不填写验证码,在短时间内还是高频率访问,就把这个IP地址段加入黑名单,除非用户填写验证码激活,否则所有请求全部拒绝。这样我们就可以通过在程序里面维护黑名单的方式来动态的跟踪爬虫的情况,甚至我们可以自己写个后台来手工管理黑名单列表,了解网站爬虫的情况。
这个策略已经比较智能了,但是还不够好!我们还可以继续改进:
1、用网站流量统计系统来改进实时反爬虫系统
还记得吗?网站流量统计系统记录的IP地址是真实用户访问IP,所以我们在网站流量统计系统里面也去操作memcached,但是这次不是增加计数值,而是减少计数值。在网站流量统计系统里面每接收到一个IP请求,就相应的cache.decrement(key)。所以对于真实用户的IP来说,它的计数值总是加1然后就减1,不可能很高。这样我们就可以大大降低判断爬虫的阀值,可以更加快速准确的识别和拒绝掉爬虫。
2、用时间窗口来改进实时反爬虫系统
爬虫爬取网页的频率都是比较固定的,不像人去访问网页,中间的间隔时间比较无规则,所以我们可以给每个IP地址建立一个时间窗口,记录IP地址最近12次访问时间,每记录一次就滑动一次窗口,比较最近访问时间和当前时间,如果间隔时间很长判断不是爬虫,清除时间窗口,如果间隔不长,就回溯计算指定时间段的访问频率,如果访问频率超过阀值,就转向验证码页面让用户填写验证码。
最终这个实时反爬虫系统就相当完善了,它可以很快的识别并且自动封锁爬虫的访问,保护网站的正常访问。不过有些爬虫可能相当狡猾,它也许会通过大量的爬虫测试来试探出来你的访问阀值,以低于阀值的爬取速度抓取你的网页,因此我们还需要辅助第3种办法,用日志来做后期的分析和识别,就算爬虫爬的再慢,它累计一天的爬取量也会超过你的阀值被你日志分析程序识别出来。
总之我们综合运用上面的四种反爬虫策略,可以很大程度上缓解爬虫对网站造成的负面影响,保证网站的正常访问。
❸ 网站被恶意爬虫抓取,应该怎么办
在nginx上配置规则,限制来该IP网段的连接数和请求数就可以了啊。
❹ 如何对付网络爬虫
PHP可以通过$_SERVER['HTTP_USER_AGENT']函数来判断是否是蜘蛛以及是什么蜘蛛! 直接把代码给你吧! $useragent=$_SERVER['HTTP_USER_AGENT']; if(substr_count($useragent,"Baispider")){echo "网络蜘蛛";}
❺ 如何应对网站反爬虫策略如何高效地爬大量数据
一般有一下几种
一些常用的方法
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进行统计和排序,挑选出来前200名C段IP地址中每天访问量超过3000次的IP段地址,然后去除白名单,最后再用IP地址数据库去比对。根据经验来说,一个C段地址每天超过3000次访问已经肯定是一个大公司在访问JavaEye了,可如果该来源C段并非出自像阿里巴巴,IBM中国公司,搜狐,腾讯这样的公司地址,就可以99%断定是网络爬虫,直接用iptables干掉该C段地址。
❼ 如何对付网络爬虫
网站建设好了,当然是希望网页被搜索引擎收录的越多越好,但有时候我们也会碰到网站不需要被搜索引擎收录的情况。比如,要启用一个新的域名做镜像网站,主要用于PPC的推广,这个时候就要想法屏蔽搜索引擎蜘蛛抓取和索引我们镜像网站的所有网页。因为如果镜像网站也被搜索引擎收录的话,很有可能会影响官网在搜索引擎的权重。以下列举了屏蔽主流搜索引擎爬虫(蜘蛛)抓取/索引/收录网页的几种思路。注意:是整站屏蔽,而且是尽可能的屏蔽掉所有主流搜索引擎的爬虫(蜘蛛)。1、通过robots.txt文件屏蔽可以说robots.txt文件是最重要的一种渠道(能和搜索引擎建立直接对话),给出以下建议:User-agent:BaispiderDisallow:/User-agent:GooglebotDisallow:/User-agent:Googlebot-MobileDisallow:/User-agent:Googlebot-ImageDisallow:/User-agent:Mediapartners-GoogleDisallow:/User-agent:Adsbot-GoogleDisallow:/User-agent:Feedfetcher-GoogleDisallow:/User-agent:Yahoo!SlurpDisallow:/User-agent:Yahoo!SlurpChinaDisallow:/User-agent:Yahoo!-AdCrawlerDisallow:/User-agent:YouBotDisallow:/User-agent:SosospiderDisallow:/User-agent:SogouspiderDisallow:/User-agent:SogouwebspiderDisallow:/User-agent:MSNBotDisallow:/User-agent:ia_archiverDisallow:/User-agent:TomatoBotDisallow:/User-agent:*Disallow:/2、通过metatag屏蔽在所有的网页头部文件添加,添加如下语句:3、通过服务器(如:Linux/nginx)配置文件设置直接过滤spider/robots的IP段。小注:第1招和第2招只对“君子”有效,防止“小人”要用到第3招(“君子”和“小人”分别泛指指遵守与不遵守robots.txt协议的spider/robots),所以网站上线之后要不断跟踪分析日志,筛选出这些badbot的ip,然后屏蔽之。
❽ 网络爬虫是什么意思
网络爬虫与反爬虫是共存的,网络爬虫就是爬取采集别人网络的数据信息,爬虫技术泛滥后,原创的东西得不到保护,想方设法的保护自己努力的成果所以有了反爬虫机制。
反爬虫机制最常见的就是根据ip访问的频率来判断。当一个ip频繁的对网站进行访问,就会触发网站的反爬虫机制,ip将被限制或者禁用,爬虫工作无法继续进行。那怎么办呢?
1、可以降低爬取的速度,这样可以有效的减少被封的机率,这种方法不合适大量爬取的任务。
2、通过使用万变ip代理,不断更换全国各地ip,这样网站就无法识别判断ip是正在爬取采集工作,ip一定要选择像万变ip代理的高匿ip,不然采集过程中被识别那真是得不尝试!
❾ 如何对付网络爬虫
可以设置robots.txt来禁止网络爬虫来爬网站。
方法:
首先,你先建一个空白文本文档(记事本),然后命名为:robots.txt;
(1)禁止所有搜索引擎访问网站的任何部分。
User-agent: *
Disallow: /
(2)允许所有的robots访问,无任何限制。
User-agent: *
Disallow:
或者
User-agent: *
Allow: /
还可以建立一个空文件robots.txt或者不建立robots.txt。
(3)仅禁止某个搜索引擎的访问(例如:网络spider)
User-agent: BaiSpider
Disallow:/
(4)允许某个搜索引擎的访问(还是网络)
User-agent: BaiSpider
Disallow:
User-agent: *
Disallow: /
这里需要注意,如果你还需要允许谷歌bot,那么也是在“User-agent: *”前面加上,而不是在“User-agent: *”后面。
(5)禁止Spider访问特定目录和特定文件(图片、压缩文件)。
User-agent: *
Disallow: /AAA.net/
Disallow: /admin/
Disallow: .jpg$
Disallow: .rar$
这样写之后,所有搜索引擎都不会访问这2个目录。需要注意的是对每一个目录必须分开说明,而不要写出“Disallow:/AAA.net/ /admin/”。