php禁止网页抓取(PHP代码找到如下类似位置,重启Apache即可:找到 )

优采云 发布时间: 2021-11-20 00:14

  php禁止网页抓取(PHP代码找到如下类似位置,重启Apache即可:找到

)

  找到如下类似的位置,按照如下代码添加/修改,然后重启Apache:

  DocumentRoot /home/wwwroot/xxx

SetEnvIfNoCase User-Agent ".*(FeedDemon|JikeSpider|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|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms)" BADBOT

Order allow,deny

Allow from all

deny from env=BADBOT

  二、Nginx 代码

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

  cd /usr/local/nginx/conf

  vimagent_deny.conf

  #禁止Scrapy等工具的抓取

if ($http_user_agent ~* (Scrapy|Curl|HttpClient)) {

return 403;

}

#禁止指定UA及UA为空的访问

if ($http_user_agent ~ "FeedDemon|JikeSpider|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|YisouSpider|HttpClient|MJ12bot|heritrix|EasouSpider|Ezooms|^$" ) {

return 403;

}

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

if ($request_method !~ ^(GET|HEAD|POST)$) {

return 403;

}

  然后,在网站位置/{在相关配置中插入以下代码:

  include agent_deny.conf;

  比如张哥博客的配置:

  [[email protected]_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:

  /usr/local/nginx/sbin/nginx -s reload

  三、PHP 代码

  将下面的方法放到网站

  入口文件index.php中的第一个

  //获取UA信息

$ua = $_SERVER['HTTP_USER_AGENT'];

//将恶意USER_AGENT存入数组

$now_ua = array('FeedDemon ','BOT/0.1 (BOT for JCE)','CrawlDaddy ','Java','Feedly','UniversalFeedParser','ApacheBench','Swiftbot','ZmEu','Indy Library','oBot','jaunty','YandexBot','AhrefsBot','YisouSpider','jikeSpider','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot');

//禁止空USER_AGENT,dedecms等主流采集程序都是空USER_AGENT,部分sql注入工具也是空USER_AGENT

if(!$ua) {

header("Content-type: text/html; charset=utf-8");

wp_die('请勿采集本站,因为采集的站长木有小JJ!');

}else{

foreach($now_ua as $value )

//判断是否是数组中存在的UA

if(eregi($value,$ua)) {

header("Content-type: text/html; charset=utf-8");

wp_die('请勿采集本站,因为采集的站长木有小JJ!');

}

}

  四、测试结果

  如果是vps的话就很简单了,用curl -A模拟爬行就可以了,比如:

  模拟一搜蜘蛛爬行:

  curl -I -A 'YisouSpider' zhangge.net

  用空的 UA 模拟爬行:

  curl -I -A '' zhangge.net

  模拟百度蜘蛛爬行:

  curl -I -A 'Baiduspider' zhangge.net

  三个抓取结果截图如下:

  

  可以看出,如果一搜蜘蛛和UA为空,则返回403禁止标志,而百度蜘蛛成功返回200,说明生效!

  补充:第二天查看nginx日志效果截图:

  ①、UA信息为空的垃圾采集被拦截:

  

  ②,被禁止的UA被屏蔽了:

  

  因此,对于垃圾蜘蛛的采集,我们可以通过分析网站的访问日志,找出一些我们之前没有见过的蜘蛛的名字。查询无误后,我们可以将它们添加到前面代码的禁止列表中,起到禁止爬取的作用。

  五、附录:UA 合集

  以下是网上常见的垃圾邮件UA列表,仅供参考,也欢迎大家补充。

  FeedDemon 内容采集

BOT/0.1 (BOT for JCE) sql注入

CrawlDaddy sql注入

Java 内容采集

Jullo 内容采集

Feedly 内容采集

UniversalFeedParser 内容采集

ApacheBench cc攻击器

Swiftbot 无用爬虫

YandexBot 无用爬虫

AhrefsBot 无用爬虫

YisouSpider 无用爬虫

jikeSpider 无用爬虫

MJ12bot 无用爬虫

ZmEu phpmyadmin 漏洞扫描

WinHttp 采集cc攻击

EasouSpider 无用爬虫

HttpClient tcp攻击

Microsoft URL Control 扫描

YYSpider 无用爬虫

jaunty wordpress爆破扫描器

oBot 无用爬虫

Python-urllib 内容采集

Indy Library 扫描

FlightDeckReports Bot 无用爬虫

Linguee Bot 无用爬虫

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线