Hexo处理爬虫 | Word Count: 547 | Reading Time: 2mins | Post Views:
经过观察,我的小破站居然有一堆的爬虫在搜集。说起来,我这个整站大小才33M,一天整站的流量大约1GB,光Google的爬虫居然能有七八百兆的流量。也不知道它们都在干嘛。
2024.10 山西大同·云冈石窟内的一群鸭鸭
软约定 Hexo本身输出的是一堆静态HTML页,其渲染生成的目标文件夹public下的内容是会被清空,然后再生成当期新的内容。所以,类似wordpress之类动态网站根目录直接丢robots.txt来组织官方爬虫的行为是不行的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 # 创建robots.txt touch blog/source/robots.txt # _config.yml配置渲染豁免 skip_render: - "robots.txt" # 指定robots.txt内容 User-agent: Googlebot User-agent: AdsBot-Google User-agent: BaiduSpider User-agent: YisouSpider User-agent: 360Spider User-agent: YodaoBot Disallow: / User-agent: SogouSpider User-agent: Sosospider User-agent: bingbot Allow: / Disallow: /categories/ Disallow: /tags/ Disallow: /about/ Disallow: /books/ Disallow: /movies/ Disallow: /netdata/ Disallow: /html/ User-agent: * Disallow: / Sitemap: https://www.sujx.net/sitemap.xml # 重新生成站点 hexo clean hexo g
参考链接:
[Robots.txt简介]https://developers.google.cn/search/docs/crawling-indexing/robots/intro?hl=zh-cn
硬约定 由于Robots.txt只是提供一个建议值来约束爬虫的行为,并不能完全杜绝爬虫乱爬的行为。我们还可以使用Nginx的来将爬虫导向错误页面来阻止其行为。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 location / { root /opt/blog/public; index index.html; # 禁止Scrapy等工具的抓取 if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) { return 403; } # 禁止指定UA及UA为空的访问 if ($http_user_agent ~ "BaiduSpider|JiKeSpider|YandexBot|Bytespider|FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Java|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpClient|MJ12bot|heritrix|Ezooms|^$" ) { return 404; } # 禁止非GET|HEAD|POST方式的抓取, ~ 为模糊匹配 ~* 为模糊匹配不区分大小写 if ($request_method !~ ^(GET|HEAD|POST)$) { return 403; } if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)" ) { return 404; } if ($http_user_agent ~ "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)") { return 404; } if ($http_user_agent ~ "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X)(compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)") { return 404; } if ($http_user_agent ~ "Mozilla/5.0 (Linux; Android 10; VCE-AL00 Build/HUAWEIVCE-AL00; wv)") { return 404; } }