欢迎您光临自学哈网,只为分享网络知识教程,供大家学习参考!

「自学哈网」 Nginx 服务器环境利用user_agent屏蔽蜘蛛和客户端访问

作者 : 自学哈 本文共1377个字,预计阅读时间需要4分钟 2022-10-18 共199人阅读
也想出现在这里? 联系我们

最近网站总是时常打不开,分析了一下网站访问日志,发现有国外的网站网虫在大量爬取,本来昨天已经在robots.txt文件中声明不允许它们访问了,没想到还在爬取,有必要强制禁止让它们访问。

网站服务器使用的是 Nginx + PHP 环境,通过用user_agent来屏蔽某些蜘蛛的访问,顺便再分享一下怎样屏蔽工具和客户端的访问的方法。

将下面代码添加到网站配置文件中即可。

1. 禁止空agent的浏览器访问

if ($http_user_agent ~ ^$) {
return 403;
}

2. 禁止Scrapy等工具的抓取

if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {
return 403;
}

3. 禁止指定UA的访问

if ($http_user_agent ~ "ApacheBench|WebBench|HttpClient|Java|python|Go-http-client|FeedDemon|JikeSpider|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Feedly|UniversalFeedParser|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|lightDeckReports Bot|YYSpider|DigExt|YisouSpider|MJ12bot|heritrix|EasouSpider|LinkpadBot|Ezooms" )
{
return 403;
}

这个运用比较广泛,比如分享到QQ和微信的网页禁止直接在QQ和微信中打开,以免挂红。

4. 禁止爬虫抓取

if ($http_user_agent ~* "qihoobot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") 
{ 
    return 403; 
}

5. 禁止非GET|HEAD|POST方式的抓取

if ($request_method !~ ^(GET|HEAD|POST)$) {
return 403;
}

6. 禁止特殊的user_agent的访问

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;
}

怎样快速分析出哪些是频繁访问的user_agent呢?通过分析nginx的日志可以得出。

tail -n 1000 /usr/local/nginx/logs/access.log | awk -F\" '{A[$(NF-1)]++}END{for(k in A)print A[k],k}' | sort -n | tail 分析访问次数

通过执行以上命令可以得出访问最多的user_agent,再通过人为判断是否正常访问来屏蔽。

本站声明:
本站所有资源来源于网络,分享目的仅供大家学习和交流!如若本站内容侵犯了原著者的合法权益,可联系邮箱976157886@qq.com进行删除。
自学哈专注于免费提供最新的分享知识、网络教程、网络技术的资源分享平台,好资源不私藏,大家一起分享!

自学哈网 » 「自学哈网」 Nginx 服务器环境利用user_agent屏蔽蜘蛛和客户端访问
也想出现在这里? 联系我们
© 2022 Theme by - 自学哈网 & WordPress Theme. All rights reserved 浙ICP备2022016594号