अन्य उत्तरों के अनुसार, फेसबुक का अर्ध-आधिकारिक शब्द "इसे चूसना" है। यह मुझे cannot follow Crawl-delay (हाँ, मुझे पता है कि यह "क्रॉलर" नहीं है, हालांकि कुछ सेकंड में 100 पेज प्राप्त करना एक क्रॉल है, जिसे आप इसे कॉल करना चाहते हैं)।
चूंकि कोई अपने हबिस से अपील नहीं कर सकता है, और उनके आईपी ब्लॉक को ड्रॉइंग करना बहुत ही कठिन है, यहां मेरा तकनीकी समाधान है।
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;
}
}
आप की तरह कुछ के साथ एक कमांड लाइन से इस परीक्षण कर सकते हैं:
$ rm index.html*; wget -U "facebookexternalhit/1.0 (+http://www.facebook.com/externalhit_uatext.php)" http://www.foobar.com/; less index.html
सुधार सुझावों का स्वागत है ... मैं एक बहुत बड़ा विस्फोट के साथ उनके कुछ संगामिति मुद्दों हो सकता है लगता है कि होगा।
हमारी साइट पर फेसबुक बॉट ने 21 अगस्त 09:00 सीईटी के बाद से अपना भार फैलाना शुरू कर दिया है। कोई और फट लोड नहीं! –
बॉट 7 अगस्त को अपने दुर्व्यवहार जारी रखा :( –
संबंधित, देखें: http://stackoverflow.com/questions/7716531/facebook-and-crawl-delay-in-robots-txt – artlung