PHP에서 크롤링을 금지하는 방법: 먼저 "$_SERVER['HTTP_USER_AGENT'];" 방법을 통해 UA 정보를 얻은 다음 악성 "USER_AGENT"를 배열에 저장하고 마지막으로 빈 "USER_AGENT"와 같은 주류 수집 프로그램을 비활성화합니다. .
추천: "PHP 튜토리얼"
우리 모두는 인터넷에 많은 크롤러가 있다는 것을 알고 있습니다. 일부는 Baidu Spider(Baiduspider)와 같이 웹사이트에 포함하는 데 도움이 되고 일부는 준수하지 않습니다. 압력을 가하고 웹사이트에 트래픽을 가져올 수 없는 쓸모없는 크롤러(최신 추가: Yisou Spider가 UC Shenma Search에 인수되었습니다! 따라서 이 기사에서는 Yisou에 대한 금지 조치를 해제했습니다.) 거미! ==> 최근 Zhang Ge는 nginx 로그에 Yisou 및 기타 쓰레기에 대한 크롤링 기록이 많다는 사실을 발견하고 쓰레기 거미가 웹 사이트를 크롤링하는 것을 방지하기 위해 인터넷에서 다양한 방법을 수집하고 수집했으며 자신의 웹 사이트를 설정했습니다. 또한 모든 웹마스터를 위한 참조 자료도 제공했습니다.
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; }
그런 다음 웹 사이트 관련 구성에서 위치 / { 뒤에 다음 코드를 삽입합니다.
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
웹사이트 항목 파일 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 및 기타 주류 수집 프로그램은 모두 비어 있으며, 일부 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인 경우 매우 간단합니다. 컬을 사용하세요. -A 크롤링 시뮬레이션 예:
Yisou Spider의 크롤링 시뮬레이션:
curl -I -A 'YisouSpider' zhang.ge
빈 UA의 크롤링 시뮬레이션:
curl -I -A '' zhang.ge
Baidu Spider Take 크롤링 시뮬레이션:
curl -I -A 'Baiduspider' zhang.ge
웹사이트 디렉토리에서 .htaccess를 수정하고 다음 코드(선택적 2개 코드)를 추가합니다. 세 가지 크롤링 결과의 스크린샷은 다음과 같습니다.
좋아요 Yisou Spider와 UA의 빈 반환은 403 금지 액세스 플래그인 반면 Baidu Spider는 200을 성공적으로 반환하여 효과적임을 알 수 있습니다!
①, 빈 UA 정보가 있는 가비지 수집이 차단됨:
②, 금지된 UA가 차단됨:
따라서 스팸 스파이더의 수집을 통해 웹사이트의 액세스 로그를 분석하여 일부 알려지지 않은 스파이더의 이름을 알아낼 수 있으며 쿼리가 올바른 경우 이를 이전 코드의 금지 목록에 추가하여 크롤링을 금지할 수 있습니다. .
다음은 인터넷에서 흔히 볼 수 있는 스팸 UA 목록입니다. 참고용으로 추가하셔도 좋습니다.
아아아아위 내용은 웹사이트 크롤링을 금지하도록 PHP를 설정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!