define('ISROBOT', getrobot());if(defined('NOROBOT') && ISROBOT) {exit(header("HTTP/1.1 403 Forbidden"));}
上面這段代碼,據說是防止機器人訪問的,我不理解哪裡代表是機人呢
判斷機器人的函數是這麼寫的,這裡面有啥玄機嗎
function getrobot() {if(!defined('IS_ROBOT')) {$kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla';$kw_browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla';if(preg_match("/($kw_browsers)/", $_SERVER['HTTP_USER_AGENT'])) {define('IS_ROBOT', FALSE);} elseif(preg_match("/($kw_spiders)/", $_SERVER['HTTP_USER_AGENT'])) {define('IS_ROBOT', TRUE);} else {define('IS_ROBOT', FALSE);}}return IS_ROBOT;}
回複討論(解決方案)
Bot-微軟的bing
Spider-百度
slurp-雅虎
其他幾個不知道,不過這也只能防止正常的抓取,人家偽造了也不一定能防止
Bot-微軟的bing
Spider-百度
slurp-雅虎
其他幾個不知道,不過這也只能防止正常的抓取,人家偽造了也不一定能防止
難道就沒有一個好辦辦嗎
流氓要抓也沒辦法,不過一般的搜尋引擎都遵循robots協議
流氓要抓也沒辦法,不過一般的搜尋引擎都遵循robots協議
$kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla';是啥意思呢
Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla
是正則要匹配的模式
Bot,Spider...都是蜘蛛的標識,一般的搜尋引擎都會寫