我已經建立了我的整個網站使用AJAX(的確是GWT)。我還實施了Google提出的AJAX抓取。然而,在實施之後,我發現雅虎,Bing和百度都沒有實施該計劃!如何識別客戶端是搜索機器人?
我想知道是否有一種方法來識別Web客戶端是一個搜索機器人。如果是,他們會顯示我創建的HTML快照。
這將是最好的,如果我能在APACHE級別識別它們,那麼我可以做一個mod_rewrite。但是,如果我可以在PHP或GWT中完成,那還是可以的。
我已經建立了我的整個網站使用AJAX(的確是GWT)。我還實施了Google提出的AJAX抓取。然而,在實施之後,我發現雅虎,Bing和百度都沒有實施該計劃!如何識別客戶端是搜索機器人?
我想知道是否有一種方法來識別Web客戶端是一個搜索機器人。如果是,他們會顯示我創建的HTML快照。
這將是最好的,如果我能在APACHE級別識別它們,那麼我可以做一個mod_rewrite。但是,如果我可以在PHP或GWT中完成,那還是可以的。
要做到這一點使用Apache,您可以使用rewriteRule
以及RewriteCond
,%{HTTP_USER_AGENT}
。
RewriteCond接受RegExp,所以你必須在那裏使用一個模式,它匹配所有這些機器人(你應該找到如何在由acme鏈接的頁面上構建模式的信息)。
但要小心:搜索引擎可能會懲罰向殭屍程序和其他客戶端傳遞不同內容的頁面。
這是非常棘手的,因爲有這麼多不同的搜索引擎。我想這不能在一個班輪中完成。如果PHP沒問題,我建議使用php_browscap.ini(可用於不同的語言)。例如,這可以與P HPs get_browser()-function一起使用。
然後,你可以檢查所有不同的瀏覽器的東西,當然機器人。
在我自己的代碼片段我使用下面的函數(基於提到browscap),以獲得相應的相關信息容易在我的代碼:
function _browser($a_browser = false, $a_version = false, $name = false)
{
$browser_list = 'msie firefox konqueror safari netscape navigator opera mosaic lynx amaya omniweb chrome avant camino flock seamonkey aol mozilla gecko';
$user_browser = strtolower($_SERVER['HTTP_USER_AGENT']);
$this_version = $this_browser = '';
$browser_limit = strlen($user_browser);
foreach ($this->_w($browser_list) as $row)
{
$row = ($a_browser !== false) ? $a_browser : $row;
$n = stristr($user_browser, $row);
if (!$n || !empty($this_browser)) continue;
$this_browser = $row;
$j = strpos($user_browser, $row) + strlen($row) + 1;
for (; $j <= $browser_limit; $j++)
{
$s = trim(substr($user_browser, $j, 1));
$this_version .= $s;
if ($s === '') break;
}
}
if ($a_browser !== false)
{
$ret = false;
if (strtolower($a_browser) == $this_browser)
{
$ret = true;
if ($a_version !== false && !empty($this_version))
{
$a_sign = explode(' ', $a_version);
if (version_compare($this_version, $a_sign[1], $a_sign[0]) === false)
{
$ret = false;
}
}
}
return $ret;
}
//
$this_platform = '';
if (strpos($user_browser, 'linux'))
{
$this_platform = 'linux';
}
elseif (strpos($user_browser, 'macintosh') || strpos($user_browser, 'mac platform x'))
{
$this_platform = 'mac';
}
else if (strpos($user_browser, 'windows') || strpos($user_browser, 'win32'))
{
$this_platform = 'windows';
}
if ($name !== false)
{
return $this_browser . ' ' . $this_version;
}
return array(
"browser" => $this_browser,
"version" => $this_version,
"platform" => $this_platform,
"useragent" => $user_browser
);
}
function _w($a = '')
{
if (empty($a)) return array();
return explode(' ', $a);
}
例子:
/*
// Examples
echo '<pre>';
print_r(_browser()); // return array of browser data
var_dump(_browser('firefox')); // return true if using firefox
var_dump(_browser('msie', '>= 7.0')); // return true if using IE 7.0 or above else false
var_dump(_browser('firefox', '< 3.0.5')); // return true if using below firefox 3.0.5 (can check minor version)
var_dump(_browser(false, false, true)); // return string of name of browser and version
// To check if Gecko browser is used
var_dump(_browser('gecko'));
// version_compared function is used so you can use the same operator syntax
var_dump(_browser('firefox', 'le 1.5'));
echo '</pre>';
如果你使用PHP,你可以檢查$_SERVER['HTTP_USER_AGENT']
對搜索引擎的用戶代理字符串的字符串 - 一些細節在這裏找到:http://en.wikipedia.org/wiki/Web_crawler
您也可以使用Firefox插件,看看搜索引擎會怎麼看你的頁面:http://chrispederick.com/work/user-agent-switcher/
你也可以使用這個http://www.useragentstring.com/pages/Crawlerlist/ – Rahly 2010-12-01 10:37:40