art*_*ung 11 seo facebook robots.txt
Facebook的网络浏览机器人是否尊重文件中的Crawl-delay:指令robots.txt?
Bra*_*vis 12
不,它不尊重robots.txt
与此处的其他答案相反,facebookexternalhit的行为类似于最卑鄙的爬虫.无论它是通过爬行还是从类似的按钮获取的网址,当它以疯狂的速度通过每一个时都无关紧要.
我们有时会得到几百次点击,因为它几乎遍布我们网站上的每个网址.它每次都会杀死我们的服务器.有趣的是,当发生这种情况时,我们可以看到Googlebot放慢速度并等待事情稳定下来然后慢慢恢复.另一方面,facebookexternalhit继续砸我们的服务器,通常比杀死我们的最初回合更难.
我们必须运行比我们实际需要的更强大的服务器,因为facebookexternalhit.我们已经进行了大量的搜索,无法找到减慢速度的方法.
Facebook的用户体验如何?
对于类似的问题,我提供了一种技术解决方案,该解决方案仅基于用户代理对负载进行速率限制。
为方便起见,此处重复了以下代码:
由于无法吸引他们的狂妄自大,并且DROP'ing他们的IP块是非常严酷的,因此这是我的技术解决方案。
在PHP中,针对每个请求尽快执行以下代码。
define( 'FACEBOOK_REQUEST_THROTTLE', 2.0 ); // Number of seconds permitted between each hit from facebookexternalhit
if( !empty( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/^facebookexternalhit/', $_SERVER['HTTP_USER_AGENT'] ) ) {
$fbTmpFile = sys_get_temp_dir().'/facebookexternalhit.txt';
if( $fh = fopen( $fbTmpFile, 'c+' ) ) {
$lastTime = fread( $fh, 100 );
$microTime = microtime( TRUE );
// check current microtime with microtime of last access
if( $microTime - $lastTime < FACEBOOK_REQUEST_THROTTLE ) {
// bail if requests are coming too quickly with http 503 Service Unavailable
header( $_SERVER["SERVER_PROTOCOL"].' 503' );
die;
} else {
// write out the microsecond time of last access
rewind( $fh );
fwrite( $fh, $microTime );
}
fclose( $fh );
} else {
header( $_SERVER["SERVER_PROTOCOL"].' 503' );
die;
}
}
Run Code Online (Sandbox Code Playgroud)
Jef*_*ock -4
我们没有爬虫。我们有一个抓取工具,可以抓取具有类似按钮/在 FB 上共享的页面上的元数据。
| 归档时间: |
|
| 查看次数: |
6441 次 |
| 最近记录: |