小知识:服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站

 以下是服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站,希望对大家有所帮助。

一、Apache

①、通过修改 .htaccess 文件

修改网站目录下的.htaccess,添加如下代码即可(2 种代码任选):

可用代码 (1):

RewriteEngine On RewriteCond %{HTTP_USER_AGENT} (^$|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|EasouSpider|Ezooms) [NC]  RewriteRule ^(.*)$ – [F] 

可用代码 (2):

SetEnvIfNoCase ^User–Agent$ .*(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|EasouSpider|Ezooms) BADBOT  Order Allow,Deny  Allow fromall Deny from env=BADBOT 

②、通过修改 httpd.conf 配置文件

找到如下类似位置,根据以下代码 新增 / 修改,然后重启 Apache 即可:

Shell

DocumentRoot /home/wwwroot/xxx  <Directory “/home/wwwroot/xxx”>  SetEnvIfNoCase User–Agent “.*(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|EasouSpider|Ezooms)” BADBOT          Order allow,deny          Allow fromall        deny from env=BADBOT  </Directory> 

%小知识:服务器反爬虫攻略:Apache/Nginx/PHP禁止某些User Agent抓取网站-猿站网-插图

二、Nginx 代码

进入到 nginx 安装目录下的 conf 目录,将如下代码保存为 agent_deny.conf

cd /usr/local/nginx/conf  vim agent_deny.conf  #禁止Scrapy等工具的抓取  if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {       return 403;  #禁止指定UA及UA为空的访问  if ($http_user_agent ~* “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|EasouSpider|Ezooms|^$” ) {       return 403;              #禁止非GET|HEAD|POST方式的抓取  if ($request_method !~ ^(GET|HEAD|POST)$) {      return 403; 

然后,在网站相关配置中的 location / { 之后插入如下代码:

Shell

include agent_deny.conf; 

如下的配置:

Shell

[marsge@Mars_Server ~]$ cat /usr/local/nginx/conf/zhangge.conf  location / {          try_files $uri $uri/ /index.php?$args;          #这个位置新增1行:          include agent_deny.conf;          rewrite ^/sitemap_360_sp.txt$ /sitemap_360_sp.php last         rewrite ^/sitemap_baidu_sp.xml$ /sitemap_baidu_sp.php last         rewrite ^/sitemap_m.xml$ /sitemap_m.php last

保存后,执行如下命令,平滑重启 nginx 即可:

Shell

/usr/local/nginx/sbin/nginx –s reload 

三、PHP 代码

将如下方法放到贴到网站入口文件 index.php 中的第一个

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:服务器运维我为什么不特别爱用Web面板

2023-5-2 10:39:27

建站知识

小知识:服务器托管和服务器租用哪个性价比更高?

2023-5-2 10:54:06

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索