您好,
User-agent: * 这里的*代表的所有的搜索引擎种类,*是一个通配符,意思是针对所有搜索引擎都生效
比如这个
User-agent: Baiduspider这个表示User-agent: Baiduspide这句以下的规则只针对百度蜘蛛,对其他搜索引擎无效
Disallow: /search.html表示禁止收录/search.html这个页面
一般情况下,搜索页面都没必要让蜘蛛收录的,出于对搜索引擎的友好,一般会禁止搜索引擎抓取
比如我博客的robots是这样的
User-agent: *
sitemap: http://www.itbyc.com/sitemap.xml
sitemap: http://www.itbyc.com/sitemap.txt
Disallow: /plus/
Disallow: /t
User-agent: Baiduspider
Disallow: /ap
User-agent: MJ12bot
Disallow: /
User-agent: Googlebot
Disallow: /-*/
此外
Disallow: /admin/ 这里定义是禁止爬寻admin目录下面的目录
Disallow: /require/ 这里定义是禁止爬寻require目录下面的目录
Disallow: /ABC/ 这里定义是禁止爬寻ABC目录下面的目录
Disallow: /cgi-bin/*.htm 禁止访问/cgi-bin/目录下的所有以".htm"为后缀的URL(包含子目录)。
Disallow: /*?* 禁止访问网站中所有包含问号 (?) 的网址
Disallow: /.jpg$ 禁止抓取网页所有的.jpg格式的图片
Disallow:/ab/adc.html 禁止爬取ab文件夹下面的adc.html文件。
Allow: /cgi-bin/ 这里定义是允许爬寻cgi-bin目录下面的目录
Allow: /tmp 这里定义是允许爬寻tmp的整个目录
Allow: .htm$ 仅允许访问以".htm"为后缀的URL。
Allow: .gif$ 允许抓取网页和gif格式图片
Sitemap: 网站地图 告诉爬虫这个页面是网站地图
参考资料:
百度百科:robots.txt 词条
http://baike.baidu.com/view/9274458.htm?fromtitle=robots.txt
1、推荐的一种方法:php判断搜索引擎蜘蛛爬虫还是人为访问代码,摘自Discuz x3.2<?php
function checkrobot($useragent=''){
static $kw_spiders = array('bot', 'crawl', 'spider' ,'slurp', 'sohu-search', 'lycos', 'robozilla')
static $kw_browsers = array('msie', 'netscape', 'opera', 'konqueror', 'mozilla')
$useragent = strtolower(empty($useragent) ? $_SERVER['HTTP_USER_AGENT'] : $useragent)
if(strpos($useragent, 'http://') === false &&dstrpos($useragent, $kw_browsers)) return false
if(dstrpos($useragent, $kw_spiders)) return true
return false
}
function dstrpos($string, $arr, $returnvalue = false) {
if(empty($string)) return false
foreach((array)$arr as $v) {
if(strpos($string, $v) !== false) {
$return = $returnvalue ? $v : true
return $return
}
}
return false
}
if(checkrobot()){
echo '机器人爬虫'
}else{
echo '人'
}
?>
实际应用中可以这样判断,直接不是搜索引擎才执行操作
<?php
if(!checkrobot()){
//do something
}
?>
2、第二种方法:
使用PHP实现蜘蛛访问日志统计
$useragent = addslashes(strtolower($_SERVER['HTTP_USER_AGENT']))
if (strpos($useragent, 'googlebot')!== false){$bot = 'Google'}
elseif (strpos($useragent,'mediapartners-google') !== false){$bot = 'Google Adsense'}
elseif (strpos($useragent,'baiduspider') !== false){$bot = 'Baidu'}
elseif (strpos($useragent,'sogou spider') !== false){$bot = 'Sogou'}
elseif (strpos($useragent,'sogou web') !== false){$bot = 'Sogou web'}
elseif (strpos($useragent,'sosospider') !== false){$bot = 'SOSO'}
elseif (strpos($useragent,'360spider') !== false){$bot = '360Spider'}
elseif (strpos($useragent,'yahoo') !== false){$bot = 'Yahoo'}
elseif (strpos($useragent,'msn') !== false){$bot = 'MSN'}
elseif (strpos($useragent,'msnbot') !== false){$bot = 'msnbot'}
elseif (strpos($useragent,'sohu') !== false){$bot = 'Sohu'}
elseif (strpos($useragent,'yodaoBot') !== false){$bot = 'Yodao'}
elseif (strpos($useragent,'twiceler') !== false){$bot = 'Twiceler'}
elseif (strpos($useragent,'ia_archiver') !== false){$bot = 'Alexa_'}
elseif (strpos($useragent,'iaarchiver') !== false){$bot = 'Alexa'}
elseif (strpos($useragent,'slurp') !== false){$bot = '雅虎'}
elseif (strpos($useragent,'bot') !== false){$bot = '其它蜘蛛'}
if(isset($bot)){
$fp = @fopen('bot.txt','a')
fwrite($fp,date('Y-m-d H:i:s')."\t".$_SERVER["REMOTE_ADDR"]."\t".$bot."\t".'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]."\r\n")
fclose($fp)
}
第三种方法:
我们可以通过HTTP_USER_AGENT来判断是否是蜘蛛,搜索引擎的蜘蛛都有自己的独特标志,下面列取了一部分。
function is_crawler() {
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT'])
$spiders = array(
'Googlebot', // Google 爬虫
'Baiduspider', // 百度爬虫
'Yahoo! Slurp', // 雅虎爬虫
'YodaoBot', // 有道爬虫
'msnbot' // Bing爬虫
// 更多爬虫关键字
)
foreach ($spiders as $spider) {
$spider = strtolower($spider)
if (strpos($userAgent, $spider) !== false) {
return true
}
}
return false
}
下面的php代码附带了更多的蜘蛛标识
function isCrawler() {
echo $agent= strtolower($_SERVER['HTTP_USER_AGENT'])
if (!empty($agent)) {
$spiderSite= array(
"TencentTraveler",
"Baiduspider+",
"BaiduGame",
"Googlebot",
"msnbot",
"Sosospider+",
"Sogou web spider",
"ia_archiver",
"Yahoo! Slurp",
"YoudaoBot",
"Yahoo Slurp",
"MSNBot",
"Java (Often spam bot)",
"BaiDuSpider",
"Voila",
"Yandex bot",
"BSpider",
"twiceler",
"Sogou Spider",
"Speedy Spider",
"Google AdSense",
"Heritrix",
"Python-urllib",
"Alexa (IA Archiver)",
"Ask",
"Exabot",
"Custo",
"OutfoxBot/YodaoBot",
"yacy",
"SurveyBot",
"legs",
"lwp-trivial",
"Nutch",
"StackRambler",
"The web archive (IA Archiver)",
"Perl tool",
"MJ12bot",
"Netcraft",
"MSIECrawler",
"WGet tools",
"larbin",
"Fish search",
)
foreach($spiderSite as $val) {
$str = strtolower($val)
if (strpos($agent, $str) !== false) {
return true
}
}
} else {
return false
}
}
if (isCrawler()){
echo "你好蜘蛛精!"
}
else{
echo "你不是蜘蛛精啊!"
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)