ホームページ  >  記事  >  バックエンド開発  >  Webサイトのクロールを禁止するようにPHPを設定する方法

Webサイトのクロールを禁止するようにPHPを設定する方法

藏色散人
藏色散人オリジナル
2020-07-24 09:35:542844ブラウズ

php でクロールを禁止する方法: 最初に "$_SERVER['HTTP_USER_AGENT'];" メソッドを通じて UA 情報を取得し、次に悪意のある "USER_AGENT" を配列に保存し、最後に空の " などの主流の収集を禁止します。 USER_AGENT」プログラム。

Webサイトのクロールを禁止するようにPHPを設定する方法

推奨: 「PHP チュートリアル

インターネット上には多数のクローラーが存在することは誰もが知っています。 Baidu Spider のように Web サイトに含めるのに役立つクローラーもありますが、Yisou Spider ( 最新の追加: Yisou Spider が UC Shenma Search に買収されました! したがって、この記事は Yisou Spider の禁止対象から削除されました! ==>関連記事)。最近、Zhang Ge 氏は、nginx のログに Yisou やその他のゴミのクロール記録が大量にあることを発見し、ゴミグモが Web サイトをクロールできないようにするためのインターネット上のさまざまな方法をまとめ、自分の Web サイトを立ち上げました。すべてのウェブマスター向けのリファレンスも提供されています。

1. Apache

①. .htaccess ファイルを変更する

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

次に、Web サイトの location / { の後に次のコードを挿入します。関連設定:
include Agent_deny.conf;
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. PHP コード

Web サイトの入り口ファイル、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','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");
die('请勿采集本站,因为采集的站长木有小JJ!');
}else{
foreach($now_ua as $value )
//判断是否是数组中存在的UA
if(eregi($value,$ua)) {
header("Content-type: text/html; charset=utf-8");
die('请勿采集本站,因为采集的站长木有小JJ!');
}
}

4. テスト効果

vps であれば非常に簡単です、例:
Yisou Spider のクロールをシミュレートするには、curl -A を使用します:
curl -I -A 'YisouSpider' zhang.ge
UA が空の場合のクロールのシミュレート:
curl - I -A ' ' zhang.ge
Baidu Spider のクロールをシミュレートします:
curl -I -A 'Baiduspider' zhang.ge

Web サイト ディレクトリの .htaccess を変更し、次のコードを追加します。コード (2 種類のコードはオプション): 3 つのクローリング結果のスクリーンショットは次のとおりです:

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

# Yisou Spider と UA の空のリターンが、 403 Forbidden Access ロゴ、Baidu Spider は Return 200 を成功させましたが、説明は有効です。

補足: 翌日、nginx ログ効果のスクリーンショットを確認してください:

①. 空の UA 情報を含むガベージ コレクションがインターセプトされます:

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

②. 禁止された UA は傍受されます:

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

したがって、スパム スパイダーを収集するために、Web サイトのアクセス ログを分析して、目に見えないものを見つけることができます。スパイダーの名前が正しい場合は、そのスパイダーを前のコードの禁止リストに追加して、クロールを禁止できます。

5. 付録: UA コレクション

以下は、インターネット上で一般的なスパム UA のリストです (参考のみ)。自由に追加してください。

rree

以上がWebサイトのクロールを禁止するようにPHPを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。