Google Crawl Stats

Google Crawl Stats

Google Crawl Stats จาก Google Webmasters Tools

วันนี้มาพูดเกี่ยวกับ SEO เรื่อง Crawl Stats (อ่านว่า ครอล) สักหน่อยครับ
หลังจากที่ไม่ได้เขียนเกี่ยวกับเรื่อง SEO มานาน ถ้าเพื่อน ๆ เคยใช้งาน
Google Webmasters Tools ก็น่าจะรู้จักกันเป็นอย่างดีกับ Crawl Stats
ว่ามีความสำคัญอย่างไร การ crawling ก็คือลักษณะการคลานเข้ามา
เก็บข้อมูลภายในเว็บเรา ไต่ไปตาม link ต่าง ๆ เพื่อนำข้อมูลที่ได้ ไปจัดเก็บ
อย่างมีระเบียบเพื่อใช้ประมวลผลอีกที ถ้า bot เข้ามาเก็บข้อมูลได้สะดวก
ได้เยอะ ไม่มีอุปสรรค ก็จะเป็นผลดี ต่อการ index ใน Google ..

ปัจจัยที่มีผลต่ออัตราการ crawling ของ Google Bot มีดังนี้ครับ
– Bandwidth Inter ยิ่งมีมากยิ่งดีเพราะ bot จะได้เข้ามาได้สะดวก
– Firewall ที่ไม่ฉลาดพอ มองว่า Bot เป็นการ Attack
– File Size ควรเป็น file ขนาดปกติไม่ใหญ่มาก ๆ เกินไป เป็น CSS+xHTML
– Sitemap.xml เพื่อเป็นการบอกทางให้ Bot เก็บข้อมูลที่เราต้องการ
– Blacklink เป็นช่องทางให้ Bot เข้ามาหาเว็บเราได้มากขึ้น

จากประสบการณ์โดยตรง เท่าทีเจอ อยู่ ๆ Crawl Stats ตกลง กว่า 20 เท่า
เท่าที่สังเกต และสอบถามเพื่อน ๆ ที่ Google ไม่ได้เกิดจากการ ban, deindex
แต่เกิดจากการที่ Bot เข้ามาเก็บข้อมูลไม่ได้ ปกติ Bot จะมีหลายตัว มีหลาย IP
แต่ละตัวก็จะทำหน้าที่ต่างกันออกไป ที่ผมเจอคือเว็บขนาดใหญ่ แต่ Bot เข้า
มาน้อยกว่าเว็บเล็ก ๆ หลายพันเท่า ซึ่งปัญหาที่แท้จริง น่าจะเกิดจาก Firewall
วิธีแก้ง่ายนิดเดียว เอา Firewall ออก (ความเห็นส่วนตัว เว็บไม่ควรมี Firewall)
แต่ถ้าไม่สามารถเอาออกได้ด้วยเหตุผลความเชื่อบางอย่าง ก็ทำ rule firewall
ให้ allow IP ของ Google Bot คือ (66.249.xxx.xxx) แล้วลองดู Crawl Stats
ใหม่ เปรียบเทียบกัน แค่นี้ ก็จบแล้วครับ ถ้ายังไม่เปลี่ยนแปลง ก็ค่อยไปไล่หา
ที่ hop อื่น ๆ ต่อไป ว่าอะไรที่เป็นตัวขวางทาง Bot ..

สำหรับวิธี Check Bot ของค่ายต่าง ๆ ว่ามี Bot อะไรเข้ามาบ้าง เข้ามาตอนไหน
เราสามารถเขียน PHP Script Check ได้ง่าย ๆ ครับ โดยการดูที่ Agent ว่า
เป็น Bot ของค่ายไหน หลัก ๆ ก็จะมีของ Google, Yahoo และ MSN ครับ ..

มาดู PHP Script Check Bot กันครับ

<?
# Check Bot Last Access
# 2009-08-14 by ton@packetlove.com

$filename = "checkbot.txt";
$yourtimezone = +6;

$yourtimezone = floor($yourtimezone);
                        if ($yourtimezone<-12 || $yourtimezone>12) $yourtimezone = 0;
                        // Date...
                        $date = gmdate("d/m/Y", time() + 3600*($yourtimezone+(date("I")==1?0:1)));
                        $time = gmdate("G:i", time() + 3600*($yourtimezone+(date("I")==1?0:1)));
                        $ipaddr = $_SERVER['REMOTE_ADDR'];
                        $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

if(eregi('Googlebot|yahoo! Slurp|msnbot',$_SERVER['HTTP_USER_AGENT']))
{
                        $handle = fopen($filename,"a");
$data = "$host : $date : $time
";
                        fwrite($handle,"$data");
                        fclose($handle);
}
else{
                        include("checkbot.txt");
}
?>

ให้ Save เป็น checkbot.php แล้วสร้าง file checkbot.txt แล้ว chmod 777
เพื่อใช้เป็น text file เก็บข้อมูล การเข้ามาของ Bot
การใช้งานก็ง่าย ๆ ครับ เพียงแต่ include(“checkbot.php”); เข้าไปในหน้าที่
เราต้องการจะติดตามการเข้ามา crawling ของ Bot จากค่ายต่าง ๆ ..

ตัวอย่าง ที่ได้จาก file checkbot.txt จะประมาณนี้ครับ
http://gulife.com/diary/checkbot.txt Bot ชุมดีจริง ๆ Gulife.com 🙂

ขอบคุณ
– พี่ตั้ม http://www.gmember.com สำหรับคำปรึกษาที่ดี
http://nadia.in.th/ สำหรับแนวทางการเขียน Script