网络爬虫概述

  网络爬虫(Web Crawler),又称网络蜘蛛(Web Spider)或网络机器人(Web Robot),是一种按照一定的规则自动抓取万维网资源的程序或者脚本,已被广泛应用于互联网领域。搜索引擎使用网络爬虫抓取Web网页、文档甚至图片、音频、视频等资源,通过相应的索引技术组织这些信息,提供给搜索用户进行查询。随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。不断优化的网络爬虫技术正在有效地应对这种挑战,为高效搜索用户关注的特定领域与主题提供了有力支撑。网络爬虫也为中小站点的推广提供了有效的途径,网站针对搜索引擎爬虫的优化曾风靡一时。

  传统网络爬虫从一个或若干个初始网页的URL(Universal Resource Locator统一资源定位符)开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定条件停止抓取。现阶段网络爬虫已发展为涵盖网页数据抽取、机器学习、数据挖掘、语义理解等多种方法综合应用的智能工具。

  网络爬虫的安全性问题

  由于网络爬虫的策略是尽可能多的“爬过”网站中的高价值信息,会根据特定策略尽可能多的访问页面,占用网络带宽并增加Web服务器的处理开销,不少小型站点的站长发现当网络爬虫光顾的时候,访问流量将会有明显的增长。恶意用户可以利用爬虫程序对Web站点发动DoS攻击,使Web服务在大量爬虫程序的暴力访问下,资源耗尽而不能提供正常服务。恶意用户还可能通过网络爬虫抓取各种敏感资料用于不正当用途,主要表现在以下几个方面:

  1)搜索目录列表

  互联网中的许多Web服务器在客户端请求该站点中某个没有默认页面的目录时,会返回一个目录列表。该目录列表通常包括可供用户点击的目录和文件链接,通过这些链接可以访问下一层目录及当前目录中的文件。因而通过抓取目录列表,恶意用户往往可获取大量有用的资料,包括站点的目录结构、敏感文件以及Web服务器设计架构及配置信息等等,比如程序使用的配置文件、日志文件、密码文件、数据库文件等,都有可能被网络爬虫抓取。这些信息可以作为挑选攻击目标或者直接入侵站点的重要资料。

  2)搜索测试页面、手册文档、样本程序及可能存在的缺陷程序

  大多数Web服务器软件附带了测试页面、帮助文档、样本程序及调试用后门程序等。这些文件往往会泄漏大量的系统信息甚至提供绕过认证直接访问Web服务数据的方法,成为恶意用户分析攻击Web服务器的有效情报来源。而且这些文件的存在本身也暗示网站中存在潜在的安全漏洞。

  3)搜索管理员登录页面

  许多网络产品提供了基于Web的管理接口,允许管理员在互联网中对其进行远程管理与控制。如果管理员疏于防范,没有修改网络产品默认的管理员名及密码,一旦其管理员登录页面被恶意用户搜索到,网络安全将面临极大的威胁。

  4)搜索互联网用户的个人资料

  互联网用户的个人资料包括姓名、身份证号、电话、Email地址、QQ号、通信地址等个人信息,恶意用户获取后容易利用社会工程学实施攻击或诈骗。

  因此,采取适当的措施限制网络爬虫的访问权限,向网络爬虫开放网站希望推广的页面,屏蔽比较敏感的页面,对于保持网站的安全运行、保护用户的隐私是极其重要的。

  基于网络爬虫技术的Web漏洞扫描

  前面提到的网络爬虫对网站的间接安全威胁,是通过对网络站点的信息收集为不法份子的非法访问、攻击或诈骗作准备。随着安全技术的发展,利用网络爬虫技术对Web漏洞的直接探测已经出现,这会直接影响到Web服务器的安全。Web服务器漏洞中,跨站脚本(Cross Site Script)漏洞与SQL注入(SQL Injection)漏洞所占比例很高,这两种漏洞均可以通过对网络爬虫的改进来进行探测。由于缺乏足够的安全知识,相当多的程序员在编写Web应用程序时对网页的请求内容缺乏足够的检查,使得不少Web应用程序存在安全隐患。用户可以通过提交一段精心构造的包含SQL语句或脚本的URL请求,根据程序的返回结果获得有关的敏感信息甚至直接修改后台数据。基于目前的安全现状,网络爬虫技术在Web漏洞扫描上的应用,大大提高了发现漏洞的效率。

  基于网络爬虫技术的Web漏洞扫描大至分为如下过程:

  1)页面过滤:通过自动化的程序抓取网站页面,对包含

  等标签的Web页面进行URL提取处理,这些HTML标签中包含URL信息,便于恶意用户进行更深入的Web访问或提交操作。

2)URL匹配:对Web页面中的URL进行自动匹配,提取由参数组合而成的动态查询URL或提交URL,进行下一步的漏洞探测。如动态查询URL“http://baike.xxxx.com/searchword/?word=frameset&pic=1”,其中 frameset为URL中动态的参数部分,可以进行参数变换。提交URL用于把Web用户的输入提交到服务器进行处理,其参数多为用户输入,同样可以进行参数变换。

  3)漏洞试探:根据动态查询URL或提交URL,自动在参数部分进行参数变换,插入引号、分号(SQL注入对其敏感)及script标签(XSS对 其敏感)等操作进行试探,并根据Web服务器返回的结果自动判断是否存在漏洞。如“URL匹配”中的动态查询URL可以变换成http://baike.xxxx.com/searchword/?word= &pic=1进行跨站脚本漏洞探测。

  如何应对爬虫的安全威胁

  由于网络爬虫带来的安全威胁,不少网站的管理人员都在考虑对爬虫访问进行限制甚至拒绝爬虫访问。实际上,根据网站内容的安全性及敏感性,区别对待爬 虫是比较理想的措施。网站的URL组织应该根据是否为适合大范围公开,设置不同的URL路径,在同一Web页面中既有需要完全公开信息也有敏感信息时,应 通过链接、标签嵌入网页等方式显示敏感内容,另外尽可能把静态页面等经评估安全性较高的页面与安全性较差的动态页面从URL上分开。当限制爬虫时可以针对URL路径的安全性与敏感性对不同种类的爬虫与代理进行限制。

  限制爬虫可以通过以下几种方法实现:

  1) 设置robots.txt文件

  限制爬虫最简单的方法是设置robots.txt文件。robots.txt文件是搜索引擎爬虫访问网站的时候要查看的第一个文件,它告诉爬虫程序在服务器上什么文件是可以被查看的,如设置Disallow: /,则表示所有的路径均不能查看。遗憾的是并不是所有的搜索引擎爬虫会遵守这个规则,因此仅仅设置robots文件是不够的。

  2) User Agent识别与限制

  要对不理会robots.txt文件的爬虫访问进行限制,首先要把爬虫流量与普通用户的访问流量进行区分,即对其进行识别。一般的爬虫程序都可以通过其HTTP请求中的User Agent字段进行识别,该字段使服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。爬虫的User Agent字段一般与浏览器的有所不同,如Google搜索引擎爬虫User Agent字段中会有类似Googlebot的字符串,如User-Agent: Googlebot/2.1 ( http://www.google.com/bot.html),百度搜索引擎爬虫则会有类似Baiduspider的字符串。不少Web服务器软件如Apache,可以设置通过User Agent字段进行访问过滤,可以比较有效的限制大部分爬虫的访问。

  3) 通过访问行为特征识别与限制

  对于在HTTP请求的User Agent字段刻意伪装成浏览器的爬虫,可以通过其访问行为特征进行识别。爬虫程序的访问一般是有规律性的频率比较高,区别于真实用户浏览时的随意性与低 频率。对这类爬虫的限制原理与DDoS攻击的防御原理很相似,都基于统计数据。对于这类爬虫的限制只能通过应用识别设备、IPS等能够做深度识别的网络设 备来实现。用网络设备限制网络爬虫,不仅比较全面,而且非常适合在多服务器情况下进行统一的管理,避免多服务器单独管理有可能造成的疏漏。

网络爬虫(网络蜘蛛,网络机器人)与Web安全相关推荐

  1. Python 网络爬虫 001 (科普) 网络爬虫简介

    Python 网络爬虫 001 (科普) 网络爬虫简介 1. 网络爬虫是干什么的 我举几个生活中的例子: 例子一: 我平时会将 学到的知识 和 积累的经验 写成博客发送到CSDN博客网站上,那么对于我 ...

  2. python3.6网络爬虫_python3.6网络爬虫

    <精通Python网络爬虫:核心技术.框架与项目实战>--导读 前 言 为什么写这本书 网络爬虫其实很早就出现了,最开始网络爬虫主要应用在各种搜索引擎中.在搜索引擎中,主要使用通用网络爬虫 ...

  3. Python网络爬虫——1、网络爬虫简介

    什么是网络爬虫 网络爬虫又称网络蜘蛛.网络蚂蚁.网络机器人,它可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则我们称之为网络爬虫算法.使用Python可以方便的编写出 ...

  4. 爬虫分类——通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫

    爬虫分类 网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫.聚焦网络爬虫.增量式网络爬虫.深层网络爬虫. 实际的网络爬虫系统通常是几种爬虫技术相结合实现的 通用网络爬虫 通用网络 ...

  5. python网络爬虫应用_python网络爬虫应用实战

    原标题:python网络爬虫应用实战 Python这门编程语言包罗万象,可以说掌握了python,除了一些特殊环境和高度的性能要求,你可以用它做任何事. Python作为一门脚本语言,它灵活.易用.易 ...

  6. 如何对付网络爬虫 - JavaEye和网络爬虫斗争之路

    http://www.kuqin.com/searchengine/20090806/66174.html 作者:robbin 来源:JavaEye 由于搜索引擎的泛滥,网络爬虫如今已经成为全球互联网 ...

  7. 精通python网络爬虫-精通Python网络爬虫:核心技术、框架与项目实战

    -- 目录 -- 前言 第一篇 理论基础篇 第1章 什么是网络爬虫 1.1 初识网络爬虫 1.2 为什么要学网络爬虫 1.3 网络爬虫的组成 1.4 网络爬虫的类型 1.5 爬虫扩展--聚焦爬虫 1. ...

  8. 网络协议从入门到底层原理(11)网络爬虫、无线网络、HTTP缓存、即时通信、流媒体

    补充知识 网络爬虫 网络爬虫的简易实例 robots.txt 无线网络 HTTP 缓存(Cache) 缓存 - 响应头 缓存 - 请求头 缓存的使用流程 即时通信(IM) XMPP MQTT 流媒体 ...

  9. 【网络爬虫】初探网络爬虫

    爬虫基础入门 什么是爬虫: 爬虫又称为网页蜘蛛/网络机器人,是一种按照一定规则,自动爬取万维网的程序或者脚本,是搜索引擎的重要组成. 爬虫的作用: 1.搜索引擎 2.数据分析,发现规律,商品活动等等 ...

  10. python网络爬虫学习_python网络爬虫学习笔记

    介绍: 网络爬虫的名字非常有意思,英文名称web spider. 真得非常形象.蜘蛛结网为了获取食物,而我们的爬虫程序,也是为了获取网络上的资源. 这篇blog是本人学习过程中的记录.学习过程中,使用 ...

最新文章

  1. python图片的比例缩放、剪裁和下采样
  2. SAP Spartacus deprecation for 4.0 需要注意的一些事项
  3. 1603 限高二叉排列树(计数DP)
  4. javascript --- 从数组中,找出比给定元素大一丁点的元素
  5. Docker最全教程——从理论到实战(四)
  6. java可视化多人群聊,java 网络编程-TCP-多人群聊(自问自答)
  7. [转载] 常用应届生Java开发笔试面试题(更新中)
  8. 挂载(mount)深入理解
  9. 关于“想哭”病毒,我也来两句。--转载
  10. 01_决策树案例一:鸢尾花数据分类
  11. 8.3 bert的蒸馏讲解 意境级
  12. 自动驾驶 2-1 第 1 课补充阅读:传感器和计算硬件 -- 上
  13. PS去掉图片上反光的操作流程
  14. 50V升压恒流LED驱动芯片
  15. 《神奇的数学》读后感_奇妙的数学读后感
  16. 细说集线器、交换机和路由器
  17. python实现有趣的数学逻辑程序
  18. JavaScript(js)基础
  19. 关于“PS中用魔棒选取之后拖到另一个图层中怎么没颜色了”的解决方法
  20. js 对日期的计算,加减天数

热门文章

  1. OLAP和OLTP的介绍
  2. 8个 Chatbot 框架介绍
  3. Ogre3D 1.8.1 Android移植
  4. wireshark源码分析二
  5. MATLAB 数据频数统计
  6. LC5454.统计全1子矩阵(矩阵统计)
  7. C++编程易范错误集合
  8. 【晶振不起振原因分析】
  9. android照片视频备份,Android 保存图片或视频到相册并刷新相册
  10. Wordpress 修改 mysql 插件_WordPress批量查找替换修改文章内容的插件和代码