蜘蛛是搜索引擎抓取网站内容的程序,可称为蜘蛛程序、蜘蛛网站、又叫 Google Spider (谷歌蜘蛛)、Baidu Spider(百度蜘蛛) 等。蜘蛛池是一种多节点分解式蜘蛛IP池服务,可解决大规模动态ip获取困难的痛点,解决新站、抓取大量动态页面、深度挖掘等问题。在SEO优化中,锁定蜘蛛是一项重要的技术手段。
如何锁定蜘蛛?
首先,需要了解蜘蛛所在的元素或特征。蜘蛛有两种类型,一种是基于UA识别,一种是基于IP识别。基于UA的蜘蛛在UA字符串中会带有spider或bot等标识。针对这种类型的蜘蛛,可以通过在nginx配置文件中增加对UA的判断,进而限制其网站访问。具体代码如下:
if ($http_user_agent ~* (spider|bot)) { return 403; }
而基于IP识别的蜘蛛需要通过反向代理,针对特定ip做限制。一般来说,建议不要单独对蜘蛛IP做拦截,而是通过反向代理限制其网站访问。例如基于OpenResty的反向代理:
location / { set $proxy_rule ""; if ($http_user_agent ~* (spider|bot)) { set $proxy_rule "__block_spider__"; } proxy_pass http://www.example.com; } # __block_spider__ 阻止互联网爬虫 location = /block_spider { internal; } location /spider.json { return 200 '{ "userIp": "", "spider": "Baidu", "success": true }'; }
如何搭建蜘蛛池?
搭建蜘蛛池需要使用多台机器,由服务器在不同的机器上跑多个蜘蛛,可以在不同环境下,进行蜘蛛行为获取,避免被禁或剔除。
蜘蛛池一般具有以下一些基本需求:
常见的蜘蛛池搭建方案有两种,分别是基于海外VPS的搭建和自建数据中心 VPS 的搭建。以下是基于hproxy的海外VPS搭建方案
# 安装依赖 sudo apt-get update sudo apt-get install -y libevent-dev openssl curl sudo pip install gevent # 克隆源码 git clone https://github.com/pandolia/hproxy.git cd hproxy # 启动 hproxy ./bin/hproxy start -g
最后,需要指定 IP 策略。以下示例是仅限制国外访问,国内都接受。
if ($http_user_agent ~* (spider|bot)) { set $allow 0; if ($geoip_country_code = CN) { set $allow 1; } if ($allow = 0) { return 404; } }
上面是基于hproxy的蜘蛛池搭建方法,基于自建数据中心VPS的方案则略有不同。不过无论是哪种方案,有效使用蜘蛛池能够提高爬虫工作效率和精确度,是SEO优化必不可少的工具。