檢查搜索引擎蜘蛛爬蟲真實性 PHP版

我們很多時候都會遇到偽造搜索引擎爬蟲的UA,但是很多時候又無法判斷他的真實性。

以下代碼,為檢驗部分搜索引擎真實性的案例,如有更多方法,請回復評論。

因為英語不太好,所以下面的內容就有部分中文了。


<?php
if(getspider()){
	exit('假的搜索引擎!');
}
function getspider(){
	$訪問UA = strtolower($_SERVER['HTTP_USER_AGENT']);
  	$訪問IP = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
  	if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
  		$list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
  		$訪問IP = $list[0];
  	}
  	if (!ip2long($訪問IP)) $訪問IP = '未知IP';
	$訪問主機 = str_replace('.', '-', $訪問IP);
	if (strpos($訪問UA, 'googlebot') !== false){
		$解析主機 = gethostbyaddr($_SERVER['REMOTE_ADDR']);
		if ($解析主機 != 'crawl-'.$訪問主機.'.googlebot.com') return 'googlebot?';
	}

	if (strpos($訪問UA, 'sogou') !== false){
		$解析主機 = gethostbyaddr($_SERVER['REMOTE_ADDR']);
		if ($解析主機 != 'sogouspider-'.$訪問主機.'.crawl.sogou.com') return 'sogou';
	}
	if (strpos($useragent, 'bing') !== false){
		$解析主機 = gethostbyaddr($_SERVER['REMOTE_ADDR']);
		if ($解析主機 != 'msnbot-'.$訪問主機.'.search.msn.com') return 'bing';
	}
	if (strpos($訪問UA, 'baiduspider') !== false){
		$解析主機 = gethostbyaddr($_SERVER['REMOTE_ADDR']);
		if ($解析主機 != 'baiduspider-'.$訪問主機.'.crawl.baidu.com') return 'baiduspider?';
	}
	return false;
}


轉載請注明出處 AE博客|墨淵 ? 檢查搜索引擎蜘蛛爬蟲真實性 PHP版

相關推薦

發表評論

路人甲

網友評論(1)

##這篇評論是私密評論##
Somnusヽ婲伈ぅ 1個月前 (2019-05-30) 回復