gpt4 book ai didi

php - 如何识别客户端是搜索机器人?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:28:25 26 4
gpt4 key购买 nike

我已经使用 AJAX(实际上是 GWT)构建了我的整个网站。我还实现了 Google 提出的 AJAX 抓取。然而,实现之后,我发现雅虎、必应、百度都没有实现该方案!

我想知道是否有一种方法可以识别网络客户端是搜索机器人。如果是,他们将看到我创建的 HTML 快照。

如果我能在 APACHE 级别识别它们,那将是最好的,然后我就可以做一个 mod_rewrite。但如果我能用 PHP 或 GWT 做到这一点,那还是没问题的。

最佳答案

这很棘手,因为有这么多不同的搜索引擎。我想这不能在一个类轮内完成。如果 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 - 如何识别客户端是搜索机器人?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4323073/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com