php でクロールを禁止する方法: 最初に "$_SERVER['HTTP_USER_AGENT'];" メソッドを通じて UA 情報を取得し、次に悪意のある "USER_AGENT" を配列に保存し、最後に空の " などの主流の収集を禁止します。 USER_AGENT」プログラム。
推奨: 「PHP チュートリアル 」
インターネット上には多数のクローラーが存在することは誰もが知っています。 Baidu Spider のように Web サイトに含めるのに役立つクローラーもありますが、Yisou Spider ( 最新の追加: Yisou Spider が UC Shenma Search に買収されました! したがって、この記事は Yisou Spider の禁止対象から削除されました! ==>関連記事)。最近、Zhang Ge 氏は、nginx のログに Yisou やその他のゴミのクロール記録が大量にあることを発見し、ゴミグモが Web サイトをクロールできないようにするためのインターネット上のさまざまな方法をまとめ、自分の Web サイトを立ち上げました。すべてのウェブマスター向けのリファレンスも提供されています。
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
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!'); } }
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 つのクローリング結果のスクリーンショットは次のとおりです:
# Yisou Spider と UA の空のリターンが、 403 Forbidden Access ロゴ、Baidu Spider は Return 200 を成功させましたが、説明は有効です。
①. 空の UA 情報を含むガベージ コレクションがインターセプトされます:
②. 禁止された UA は傍受されます:
したがって、スパム スパイダーを収集するために、Web サイトのアクセス ログを分析して、目に見えないものを見つけることができます。スパイダーの名前が正しい場合は、そのスパイダーを前のコードの禁止リストに追加して、クロールを禁止できます。
以下は、インターネット上で一般的なスパム UA のリストです (参考のみ)。自由に追加してください。
rree以上がWebサイトのクロールを禁止するようにPHPを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。