我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

  一些智能搜索引擎爬行动物合理,小型消费网站资源,但是很多不良网络爬行动物,悲惨的网页攀爬能力,经常发送数十几个请求循环反复爬行,这个履带者往往是对中小型网站的毁灭性的命中。特别是一些爬行者破坏了程序员缺乏履带的经验的程序员。一旦我曾发现javaeye的用户代理, 我发现一个用户代理商正在Java的爬行动物中攀登近100万辆的动态请求。这是一种用JDK标准类库编写的简单爬行网页程序。由于Javaeye网站的内部链接构成由循环引起的环回,以落入死循环。对于javaeye, 这一百万的光伏水平,这种履带引起的压力将非常大。它将导致网站访问缓慢,甚至无法访问它。

  还,相当数量的网络登山者是窃取目标网站的内容。例如, Javaeye网站已被两个竞争对手的网站攀升,然后用自己的论坛发布机器人,所以这个履带者不仅影响网站的速度,并侵犯网站的版权。

  丰富的原始内容,URL结构合理且易于攀爬,这只是各种爬行动物。访问流的许多网站构成。爬行动物带来的流量远远超过真实的用户访问流量。即使是履带流量也很高, 一定数量的真实流量。虽然建立了一个非常严格的反爬行动物策略,但像Javaeye网站一样设置,但是网站处理的动态请求的数量仍然是真实用户访问流量的两倍。可以肯定,今天的互联网流量至少有2/3的交通爬行动物。因此,反爬行动物是一个值得探索和解决网站的问题。

  的, 手动识别和爬行动物的拒绝

  有相当多的爬行动物会导致非常高的负载。所以, IP易于识别爬行动物的源IP。最简单的方法是使用NetStat来检查80端口:

  netstat -nt | Grep YouHostip:80 | awk'{打印$ 5}'| awk -f“:”'{打印$ 1}'| 排序| UNIQ -C | 排序-r-n.

  此行shell可以根据80端口连接的数量对源IP进行排序,这可以直观地确定网上攀岩。一般来说, 并发连接非常高。

  如果使用LightTPD进行Web服务器,然后它更简单。LightTPD的Mod_Status提供了一个非常直观的并发连接信息,包括每个连接的源IP,访问URL,连接状态和连接时间和其他信息,只要您在句柄请求状态下检查高并发IP, 您可以快速确定爬行动物的源IP。

  拒绝爬行动物可以被内核防火墙拒绝。您还可以在Web服务器中拒绝它。例如, 我用iptables。

  iptables -a输入-i eth0 -j drop -p tcp - dport 80-s 84。80。46。0/24

  直接阻止爬行动物中的C网络段地址。这是因为普通爬行动物在托管的计算机室中运行。它可以是C部分内的多个服务器上的爬行动物。而这段段落是不可能成为用户宽带互联网,阻塞C区段可以很大程度地解决问题。

  有些人提出了一个脑禁用的观点。说我想惩罚这些爬行动物。我在网页中专门设计了一个动态循环链接页面。让履带落入陷阱,我无法爬上死循环。实际上, 没有必要设置陷阱。弱隐藏的爬行物无法从正常的网页爬上它,不要这么说, 不要这么说,让真实的搜索引擎减少您的网页排名。当你运行爬虫时, 不要消耗任何机器资源。相反,真正有价值的是您的服务器CPU资源和服务器带宽。简单地拒绝爬行动物的请求是最有效的反爬行动物策略。

  第二, 通过识别爬虫的用户代理信息来拒绝爬行动物

  有许多爬行物不会以非常高的并发连接爬升。暴露自己一般不容易; 一些爬行动物来源具有广泛的IP分布。通过阻止IP段的地址,难以解决问题; 有许多各种各样的小爬行动物,他们正在努力创新谷歌以外的方式,每个履带者每天爬成千上万的网页。数十个爬行动物每天加入数百万的动态请求,由于每个小履带都非常低,因此,很难将其准确地从每天从大量访问IP地址挖掘它。[页]

  在这种情况下,我们可以通过爬行动物的用户代理信息来识别。每个爬虫都在攀登网页,将声明您的用户代理信息,因此,我们可以通过录制和分析用户代理信息来挖掘和阻止爬行动物。我们需要为每个请求记录用户代理信息。对于铁轨, 我们只需在App / Controlers / Application中。在rb中添加全局prefile_filter,要为每个请求记录用户 - 代理信息:

  Ruby Code.

  记录器。信息“http_user_agent#{请求。env[“http_user_agent”]}“

  然后是统计每天生产。日志,Pat用户代理信息,找到最多的用户代理商。应该指出的是,我们只关注那些爬行动物的用户代理信息。而不是真正的浏览器用户代理,所以你仍然必须排除浏览器用户代理。为此,只需要一个行shell:

  Ruby Code.

  grep http_user_agent生产。日志| grep -v -e'msie | Firefox | 铬| 歌剧| Safari | 壁虎'| 排序| UNIQ-C | sort -r-n | 头100>机器人。日志

  统计数据类似于:

  C代码

  57335 http_user_agent baiduspider +(+ http:// www。百度。com / search / spider。HTM)

  56639 http_user_agent mozilla / 5。兼容的; Googlebot / 2。1; + http:// www。谷歌。COM / BOT。HTML)

  42610 http_user_agent MediaPartners-Google

  19131 http_user_agent msnbot / 2。0b(+ http:// search。MSN。com / msnbot。HTM)

  从日志, 您可以看到每个爬行动物的请求数。根据用户代理信息,很容易阻止爬行动物。LightTPD配置如下:

  C代码

  $HTTP["useragent"]=~ "qihoobot|^Java|Commons-HttpClient|Wget|^PHP|Ruby|Python" {

  URL。重写=(“^ /(。*)“=>”/履带。HTML“)

  }

  使用这种方式阻止爬行动物虽然简单但非常有效,除了阻止特定的爬行动物,您还可以阻止常用编程语言和HTTP类库的用户代理信息。这将避免许多未申行的程序员习惯培训网站的骚扰。

  还有一个相对普遍的情况。它是搜索引擎的爬行频率,以攀登网站。但搜索引擎会给网站带来大量流量。我们不希望简单地阻止爬行动物。只想减少爬行动物的回收器频率,减少爬行动物引起的负荷,然后我们可以这样做:

  C代码

  $HTTP["user-agent"]=~ "Baiduspider+" {

  联系。延迟秒= 10

  }

  对于百度的履带请求延迟10秒然后处理,这可以有效地减少网站上爬行动物的负荷。

  第三, 通过网站流量统计系统和日志分析识别爬行动物

  有些爬网队喜欢修改用户代理信息以伪装自己,将自己放入真实浏览器的真实代理信息。让你识别你。在这种情况下, 我们可以识别网站流量系统记录的真实用户访问IP。

  主流网站流量统计系统不超过两个实施策略:策略嵌入在网页中,此JS将向特定统计服务器发送请求以记录访问权限, 另一个策略是直接分析服务器日志。来到统计网站访问。在理想的情况下,嵌入式JS的网站流量应高于分析服务器日志。这是因为用户浏览器将具有缓存。不一定是每个真实用户访问都会触发服务器的过程。但实际情况是分析服务器日志获得的网站访问量远高于嵌入式JS模式。在极端情况下,甚至超过10倍。

  现在许多网站,如awstats要分析服务器日志,计算网站的数量,但是一旦他们使用Google Analytics计算网站的流量,但我发现GA的流量远远低于Awstats。为什么GA和AWSTATS统计数据有这么大的差异?罪魁祸首是将自己放入浏览器的网络爬行动物中。在这种情况下, 无法有效识别awstats。所以Awstats的统计数据将很高。[页]

  实际上, 作为一个网站,如果您想知道您的网站的真实访问,我希望准确地了解网站和访问用户的每个频道的访问次数。您应该使用该页面嵌入JS的方式来开发自己的网站流量统计系统。做网站流量统计系统是一件非常简单的事情。写入服务器程序响应客户JS请求,分析并识别请求,然后在执行后台异步统计信息时编写日志。

  由流量统计系统获得的用户IP基本上是真实的用户访问。因为爬行动物无法在页面内执行js代码片段。因此,我们可以比较流量统计系统记录的IP和服务器程序日志的IP地址。如果服务器日志中的IP启动了大量请求,在交通统计系统中, 它找不到它。甚至找到它,可访问金额只有少数,无疑是一个网络爬行动物。

  分析服务器日志统计信息访问最多的IP地址段是一个行shell:

  C代码

  Grep处理。日志| awk'{打印$ 4}'| awk -f'。''{打印1美元。“2美元”。“3美元”。0“}'|排序| uniq -c | sort -r-n | head-n 200> stat_ip。日志

  然后比较统计结果和流量统计系统记录的IP地址。排除真正的用户访问IP,撤退我们要发布的网络登山者,谷歌之间,百度,Microsoft Msn Reptile, 等等。最终分析结果得到了爬行动物的IP地址。以下代码段是一个简单的实现:

  Ruby Code.

  白名单=[]

  IO。foreach(“#{rails_root}/ lib / whitelist。txt") { |line| whitelist << line.split[0].Strip if line }

  RealIPLIST. =[]

  IO。foreach(“#{rails_root}/ log / viept_ip。log") { |line| realiplist << line.条 if line }

  iplist =[]

  IO。foreach(“#{rails_root}/ log / stat_ip。日志“)做|线|

  IP =行。拆分[1]。strip

  iplist << ip if line.split[0].to_i > 3000 &&!白名单。包括?(IP)&&!真正主义者。包括?(IP)

  结尾

  报告。overt_crawler(IPLAST)

  在请求数量的IP地址段数中分析了3000多次的请求数量。排除白名单地址和实际访问IP地址,最后, 这是爬行动物的IP。然后,您可以发送邮件通知管理员以执行适当的处理。

  第四, 实时反爬行动物防火墙实时反爬行动物防火墙

  通过分析日志不是一个实时的反爬行动物策略。如果爬行动物正在攀登您的网站,然后他可以使用分布式爬行策略。例如, 找到数十万个外国代理服务器疯狂爬行您的网站,因此, 网站无法访问,然后,您可以及时分析日志。所以你必须采取实时的反爬行动物策略。有必要动态识别和阻止爬行动物的访问。

  写一个实时的反爬行动物系统来编写实时反爬行动物系统也很简单。例如, 我们可以使用memcached进行访问计数器。记录每个IP的访问频率,在单位时间内,如果访问的频率超过阈值,我们认为这家IP可能存在问题。然后我们可以返回验证码页。要求用户填写验证码。如果是爬行动物,当然, 填写验证码是不可能的。所以被拒绝,解决爬行动物问题很简单。

  记录使用memcache的每个IP访问计数,让用户在单位时间填写验证码。用Rails写的示例代码如下:

  Ruby Code.

  ip_counter = Rails。缓存。增量。remote_ip)

  如果!ip_counter.

  轨道。缓存。写(请求)。remote_ip, 1, :Expires_in => 30。分钟)

  elsif ip_counter> 2000

  渲染:模板=>'test', : status => 401 and return false [页]

  结尾

  这个程序只是最简单的例子。专业网站设计公司实际的代码实现我们还将增加大量判断。例如, 我们可能不得不排除白名单IP地址段。允许特定的用户代理通过,要登录用户和非登录用户,采用不同的阈值和计数加速器以获取任何参考地址。

  此外, 如果分布式爬行动物爬网频率太高,到期允许爬行动物再次访问服务器上的大量压力。因此,我们可以添加策略:对于用户填写验证码的验证码的IP地址。如果IP地址继续在短时间内继续继续,然后它被判断为爬行动物。添加到黑名单,后续请求被拒绝。为此,可以提高示例代码:

  Ruby Code.

  before_filter:ip_firewall, :除=>:测试

  def ip_firewall.

  渲染:file =>“#{rails_root}/ public / 403。HTML, :如果黑名单,则status => 403。包括?(IP_SEC)

  结尾

  我们可以定义全局过滤器。过滤所有请求,将拒绝黑名单中显示的IP地址。再次计算非黑名单的IP地址和统计信息:

  Ruby Code.

  ip_counter = Rails。缓存。增量。remote_ip)

  如果!ip_counter.

  轨道。缓存。写(请求)。remote_ip, 1, :Expires_in => 30。分钟)

  elsif ip_counter> 2000

  crawler_counter = rails。缓存。递增(“爬虫/#{请求。remote_ip}“)

  如果!crawler_counter.

  轨道。缓存。写(“爬虫/#{请求。remote_ip}专业网页制作, 1, :Expires_in => 10。分钟)

  elsif crawler_counter> 50

  黑名单。添加(ip_sec)

  渲染:file =>“#{rails_root}/ public / 403。HTML, :status => 403并返回false

  结尾

  渲染:模板=>'test', :status => 401并返回false

  结尾

  如果访问频率超过某个IP地址单元时间内的阈值,添加计数器,跟踪他将立即填写验证码。如果他没有填写验证码,在短时间内或高频访问,只需将此IP地址部分添加到黑名单,除非用户填写验证码激活,否则否则所有请求都被拒绝。这样, 我们可以通过维护程序中的黑名单动态跟踪爬行动物。即使我们可以编写背景以手动管理黑名单列表,了解网站爬行动物的情况。

  这个策略更聪明。但不够好!我们可以继续改进:

  1。 使用网站流量统计系统来改进实时防爬爬水系统

  你还记得吗?网站流量统计系统的IP地址是真实的用户访问IP。所以我们还要在网站流量统计系统中转到Memcached。但这一次是数值的增加,反而, 减少计数值。在网站流量统计系统中收到每个IP请求,在相应的缓存上。减少(键)。所以对于真实用户的IP,它的计数值始终加1,然后减1,这是不可能的。这样我们就可以大大减少爬行动物的门槛,它可以更准确和准确,拒绝放下爬行动物。

  2, 使用时间窗口来改进实时反爬行动物系统

  爬行的频率爬上腹板相对固定。不像人们访问网页,中间间隔更不规则,所以我们可以为每个IP地址创建一个时间窗口。记录IP地址的最后12次访问,每次录制窗口时都会滑动窗口。比较最近的访问时间和当前专业订制网站制作时间,如果间隔很长, 这不是爬行动物,清除时间窗口,如果间隔不长,回顾性地计算指定时间段的访问频率,如果访问的频率超过阈值,让用户填写转向验证码页的验证码。

  到底, 这个实时的反爬行动物系统非常完美。它可以快速识别并自动阻止爬行动物的访问,保护对网站的正常访问。然而, 一些爬行可能非常尴尬。它可以通过大量的爬行机测试来测试以测试您的访问阈值,爬网页面以爬行速度低于阈值,所以我们还需要帮助第三种方法。使用日志进行稍后的分析和识别,即使爬虫缓慢爬上慢慢。它具有累计日的攀升,将超过您的日志分析程序确定您的阈值。[Page]


专业的网站建设价钱 专业网站设计公司价格
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线: 13968746378,我们会详细为你一一解答你心中的疑难。项目经理在线
相关阅读

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13968746378

上班时间

周一到周六

公司电话

400-600-6240

二维码
线
在线留言