Maison >développement back-end >Problème PHP >Comment configurer PHP pour interdire l'exploration de sites Web

Comment configurer PHP pour interdire l'exploration de sites Web

藏色散人
藏色散人original
2020-07-24 09:35:542900parcourir

Comment interdire l'exploration en PHP : obtenez d'abord les informations UA via la méthode "$_SERVER['HTTP_USER_AGENT'];" puis stockez le "USER_AGENT" malveillant dans le tableau et enfin interdisez la collection grand public telle que vide ; Programme "USER_AGENT".

Comment configurer PHP pour interdire l'exploration de sites Web

Recommandé : "Tutoriel PHP"

Nous savons tous qu'il existe de nombreux robots d'exploration sur Internet . Certains sont utiles pour l'inclusion de sites Web, comme Baidu Spider, mais il existe également des robots d'exploration inutiles qui non seulement ne respectent pas les règles des robots et exercent une pression sur le serveur, mais ne peuvent pas non plus générer de trafic vers le site Web, comme Yisou Spider ( Dernier ajout : Yisou Spider Il a été acquis par UC Shenma Search ! Par conséquent, cet article a été supprimé de Yisou Spider ==>Articles associés). Récemment, Zhang Ge a découvert qu'il y avait beaucoup d'enregistrements d'exploration de Yisou et d'autres déchets dans le journal nginx, il a donc compilé et collecté diverses méthodes sur Internet pour empêcher les araignées poubelles d'explorer le site Web. a également fourni une référence à tous les webmasters.

1. Apache

①, en modifiant le fichier .htaccess

2. Code Nginx

Entrez le répertoire conf sous le répertoire d'installation de nginx, comme suit Enregistrez le code sous 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;
}

Ensuite, insérez le code suivant après l'emplacement / { dans la configuration liée au site Web :
include agent_deny.conf;
Par exemple, la configuration du blog de Zhang Ge :
[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即可:
/usr/local/nginx/sbin/nginx -s reload

3. Code PHP

Mettez la méthode suivante après le premier //Obtenir des informations 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','MJ12bot','WinHttp','EasouSpider','HttpClient','Microsoft URL Control','YYSpider','jaunty','Python-urllib','lightDeckReports Bot');

//Interdit USER_AGENT vide, dedecms et autres programmes d'acquisition grand public sont tous vides USER_AGENT, et certains outils d'injection SQL sont également vides USER_AGENT

if(!$ua) {
header("Content-type: text/html; charset=utf-8");
die('请勿采集本站,因为采集的站长木有小JJ!');
}else{
foreach($now_ua as $value )
//判断是否是数组中存在的UA
if(eregi($value,$ua)) {
header("Content-type: text/html; charset=utf-8");
die('请勿采集本站,因为采集的站长木有小JJ!');
}
}

4 Effet de test

S'il s'agit de vps, c'est très simple, utilisez curl -A pour simuler Just crawl, par exemple :
Simulez l'exploration par Yisou Spider :
curl -I -A 'YisouSpider' zhang.ge
Simulez l'exploration avec un UA vide :
curl -I -A ' ' zhang.ge
Simulez le crawl de Baidu Spider :
curl -I -A 'Baiduspider' zhang.ge

Modifiez le .htaccess dans le répertoire du site et ajoutez le code suivant (2 types de Code en option) : Les captures d'écran des trois résultats du crawl sont les suivantes :

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

On voit que les retours vides de Yisou Spider et UA sont 403 accès interdit signes, alors que Baidu Spider réussit Return 200, la description est valable !

Supplément : Le lendemain, vérifiez la capture d'écran de l'effet de journal nginx :

①, le garbage collection avec des informations UA vides a été intercepté :

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

②. Les UA interdits sont interceptés :

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

Par conséquent, pour la collecte des spams, nous pouvons analyser les journaux d'accès du site Web pour en découvrir certains invisibles. . Une fois le nom de l'araignée trouvé correctement, il peut être ajouté à la liste des interdictions du code précédent pour interdire l'exploration.

5. Annexe : Collection UA ​​

Ce qui suit est une liste des spams UA courants sur Internet, à titre de référence uniquement, et vous êtes invités à y ajouter.

FeedDemon 内容采集
BOT/0.1 (BOT for JCE) sql注入
CrawlDaddy sql注入
Java 内容采集
Jullo 内容采集
Feedly 内容采集
UniversalFeedParser 内容采集
ApacheBench cc攻击器
Swiftbot 无用爬虫
YandexBot 无用爬虫
AhrefsBot 无用爬虫
YisouSpider 无用爬虫(已被UC神马搜索收购,此蜘蛛可以放开!)
MJ12bot 无用爬虫
ZmEu phpmyadmin 漏洞扫描
WinHttp 采集cc攻击
EasouSpider 无用爬虫
HttpClient tcp攻击
Microsoft URL Control 扫描
YYSpider 无用爬虫
jaunty wordpress爆破扫描器
oBot 无用爬虫
Python-urllib 内容采集
Indy Library 扫描
FlightDeckReports Bot 无用爬虫
Linguee Bot 无用爬虫

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn