Google tarafından Google Analytics'te oluşturulan URL'ler nasıl görüntülenir?
Yayınlanan: 2021-06-11Her şeyden önce, çeviride bana yardım ettiği için Christian'a özel teşekkürler!
Google'ın, Javascript ile yüklenen içeriği, cep telefonu olan gerçek bir kullanıcının göreceği şekilde tarama ve alma kapasitesinde büyük iyileştirmeler yapmaya başlamasından bu yana birkaç yıl geçti.
Bununla birlikte, tarama ve oluşturmanın (bir HTML belgesini görsel bir yapıya dönüştürme süreci) maliyeti, yalnızca tarama ve elde etme işleminden çok daha büyük olduğundan, Google altyapısını geliştirse bile bulduğu tüm URL'leri tarayamaz. bir URL'nin HTML'si. Google'ın kendisi bunu kabul etti, bu nedenle Google'ın sitemizin en önemli URL'lerini, özellikle daha büyük sitelerde ve/veya müşteri tarafından yürütülen JS'ye bağlı olan sitelerde (CSR, İstemci Tarafı İşleme) bulmasını, oluşturmasını ve dizine eklemesini sağlamak önemlidir.
Yıllar önce, bir URL'nin içeriğine değer vermek ve onu dizine ekleyip eklememeye karar vermek için Google, URL'nin HTML'sini (ve oraya bağlanan resimleri) almakla yetindi. Bu HTML, Google'ın, HTML'nin oluşturulduktan sonra Javascript kullanılarak değiştirilip değiştirilmediğini dikkate almadan URL'yi dizine eklemek ve sıralamak için kullandığı içerikti.
Şimdi, HTML istemci tarafını değiştiren Javascript çerçevelerinin hype ile, Google'ın içeriği oluşturmak ve almak için HTML'yi, JS kodunu, CSS stillerini ve diğer kaynakları (resimler, cepheler, vb.) alması gerekiyor. son HTML, böylece dizine gidip gitmeyeceğine karar verebilir.
Tüm bu süreç, normal bir kullanıcının görebileceği gibi tek bir partide yapılmaz: iki adımda yapılır. İlk olarak, Google URL'yi tarar ve "rendered" HTML'yi (şimdiye kadar yaptığı gibi) alır ve bir süre sonra (belirli bir sabit süre olmadan), o HTML'de referans verilen kaynakların geri kalanını alır ve dener. son, işlenmiş HTML'yi almak için sayfayı oluşturmak için. Bu ikinci adım, “ikinci dalga indeksleme” olarak adlandırılır.
Bir dizi URL'yi taramak ve dizine eklemek için, bunları oluşturmanın maliyetinin, hem zaman hem de kaynaklar açısından yalnızca oluşturulmamış HTML'yi almaktan çok daha büyük olduğunu anlamak için çok fazla teknik bilgiye sahip olmamıza gerek yok. Bu nedenle, aynı miktarda sınırlı kaynağı kullanarak Google, oluşturması gerekiyorsa daha az URL'yi tarayabilir ve dizine ekleyebilir. Bu nedenle Google'ın hangi URL'lerin oluşturulacağına ve hangilerinin oluşturulmayacağına karar vermesi/öncelik vermesi gerekir.
Daha sonra hangi URL'nin taranması gerektiğine karar vermek için Google, her URL'nin PageRank'i gibi diğer faktörleri veya web yöneticisinin taramayla ilgili herhangi bir özel ayarı yapılandırıp yapılandırmadığını dikkate alarak, o URL'nin son taranmasından bu yana değişmiş olma olasılığını hesaplar. Sıklık. Bu, değişmeyen bir şeyi taramak için sınırlı kaynaklar harcamak anlamsız olduğundan mantıklıdır.
Bu makaleyi sizinle paylaşmak istiyorum çünkü çok iyi bilinmediğini ve Google'ın bir sonraki adımda hangi URL'yi tarayacağına nasıl karar verdiğini anlamak için çok aydınlatıcı olabileceğini düşünüyorum. Google mühendisleri tarafından yazılmıştır ve gerçek bir problemi çözmek için matematiksel bir soyutlamadır. Matematiksel formüllerden korkmayın, Veri Bilimcisi olmayanlar için mükemmel bir şekilde açıklanmıştır.
Daha sonra hangi URL'nin taranacağına karar verdikten sonra, Googlebot'un taranan her URL için o URL'yi oluşturup oluşturmayacağını belirlemesi gerekir ve bir URL oluşturmaya karar verirse bunu başarmak için tüm kaynaklara ihtiyacı olacaktır. İhtiyaç duyulan kaynakların her birini talep etmesi gerekip gerekmediğine karar vermek için, muhtemelen benzer bir matematiksel süreç kullanır, ancak önbellek süreleri, kaynağı elde etme maliyeti vb. gibi bazı farklılıklar vardır.
Tüm bunlardan dolayı, sitemizden hangi URL'lerin Google tarafından tarandığını ve hangilerinin oluşturulmakta olduğunu bilmek çok önemlidir. Funnel▼Punk'ta (büyük web siteleriyle çalıştığımız yer) kullandığımız bu bilgiyi elde etmenin kolay bir yolu, sunucu günlüklerini analiz etmektir (bununla ilgili blogumda ispanyolca bir yazı ve Oncrawl'ın blogunda bir tane daha var) ), Googlebot'un sitemizde ne yaptığının tam bir resmini elde etmek. Günlük analizi birçok insan için sıkıcı ve pahalı olabilir, bu nedenle sizinle Google Analytics'te Googlebot tarafından hangi URL'lerin oluşturulduğunu izlemenin bir yolunu paylaşmak istiyorum.
[Örnek Olay] Google'ın bot taramasını yönetme
Google tarafından oluşturulan izleme URL'leri
Yöntem, en azından herhangi bir geliştirme ekibi ve PHP veya benzeri ile çalışan herhangi bir web yöneticisi için nispeten basittir. 3 adımı vardır:
- javascript kodu ekle
Kod, Googlebot'un Javascript'i normal bir kullanıcının yaptığı gibi yürüttüğünü algılar ve Javascript (şeffaf bir piksel) kullanarak bir resim yükler. - sunucu yapılandırması
Şeffaf pikselin URL'si istendiğinde sunucuyu bir PHP dosyasını (veya arka uçta kullanılan herhangi bir başka programlama dilini) yürütecek şekilde yapılandırın. - Verileri Google Analytics'e gönderin
PHP dosyamız, Googlebot'un gerçekten Googlebot olup olmadığını kontrol edecek ve eğer öyleyse, verileri Google Analytics'e gönderecektir.
javascript kodu ekle
Denediğim farklı deneylerde, Googlebot'un Javascript'i yalnızca Javascript kodunun bir kullanıcı etkileşimine ihtiyacı olmadığında çalıştıracağını kontrol ettim. Örneğin, Googlebot, onload veya onready olaylarıyla tetiklenen herhangi bir Javascript kodunu yürütür. Bu örnekte, onLoad olayı ile yani sayfanın tüm elemanları yüklendiğinde tetiklenecek bir fonksiyon oluşturacağız.
Bu işlev, Kullanıcı Aracısının Googlebot'un bilinen botlarından herhangi birini içerip içermediğini kontrol edecek ve eğer öyleyse, TransparentPixelGooglebot.gif olarak adlandıracağımız bir resim (şeffaf bir piksel) yükleyecektir.
<script> window.addEventListener("yükle", function(){ var botPattern = "googlebot|Googlebot-Mobile|Googlebot-Image|Google favicon|Mediapartners-Google"; var re = new RegExp(botPattern, 'i'); var userAgent = navigator.userAgent; if (re.test(userAgent)) { var client = new XMLHttpRequest(); var trackRenderURL='https://www.mecagoenlos.com/TransparentPixelGooglebot.gif?OriginUrl='+window.location.href; client.open('GET',trackRenderURL); client.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8'); client.send(null); } }); </script>Googlebot, Javascript'e her eriştiğinde ve onu çalıştırdığında, “TransparentPixelGooglebot.gif” görüntüsünü yükleyerek, görüntünün URL'sine erişilen belirli URL'yi belirteceğimiz bazı parametreler ekleyerek işlevimiz tetiklenir.
Bu değişkende, erişilen URL'yi ve bunu isteyen Kullanıcı Aracısını eklediğimiz “TransparentPixelGooglebot.gif” resmimizi yüklemek için talep edilecek tam URL'yi oluşturacağız.
var trackRenderURL='https://www.mecagoenlos.com/TransparentPixelGooglebot.gif?OriginUrl='+window.location.href;
Sunucu yapılandırması (.htaccess)
Bir sonraki adımımız, sunucumuzu, pikselin URL'si (TransparentPixelGooglebot.gif) istendiğinde, bir PHP dosyası yürütülecek şekilde (GooglebotRenderJS.php) yapılandırmaktır.
Bunu yapmak için, .htaccess dosyamızda bazı değişiklikler yapmamız gerekiyor (bir Apache sunucusunu ve arka uç programlama dili olarak PHP kullandığımız için)
Bu iki özel satır, bunu gerçekleştirecek olanlardır:
RewriteCond %{REQUEST_URI} TransparentPixelGooglebot.gif RewriteRule TransparentPixelGooglebot.gif(.*)$ https://www.mecagoenlos.com.com/GooglebotRenderJS.php$1
Tahmin edebileceğiniz gibi, piksel isteğine dahil edilen parametreler, PHP dosyasının (GooglebotRenderJS.php) bunları "okuyabilmesi" için yayılır.
Tarama Verileri³
PHP dosyasından verileri Google Analytics'e gönderin
Son adımımızda ise piksel (TransparentPixelGooglebot.gif) istendiğinde çalıştırılacak PHP dosyasını (GooglebotRenderJS.php) oluşturuyoruz.
Bu dosya:
- İsteğin gerçekten Googlebot tarafından mı yoksa Googlebot'un Kullanıcı Aracısı kullanılarak sahte bir Googlebot tarafından mı yapıldığını ters DNS kullanarak kontrol edin.
- Ne tür bir bot olduğunu belirleyin (Googlebot Mobil, Görseller, Reklamlar vb.)
- Verileri, aşağıdaki değişkenleri atayacağımız bir etkinlik içinde (Google Analytics'in ölçüm protokolünü kullanarak) Google Analytics'e gönderin:
- Etkinlik Kategorisi: “GoogleRenderFromHtaccess”
- Etkinlik Eylemi: Oluşturulan URL (piksel isteğinin yönlendireni)
- Etkinlik Etiketi: Kullanıcı Aracısını, IP'yi ve botun gerçek Googlebot ("Gerçek") veya sahte ("Sahte") olup olmadığını birleştiren bir dize. Googlebot'un kimliğinin doğru çalışıp çalışmadığını görebilmek için üçünü GA'ya gönderiyorum.
- *Önemli: Her şeyin doğru çalışıp çalışmadığını test etmek için IP'yi yalnızca birkaç gün sakladım, daha sonra veri koruma yasalarıyla ilgili herhangi bir sorun olması durumunda bunu yapmayı bıraktım
<?php header("Pragma yönergesi: önbellek yok"); header("Önbellek yönergesi: önbellek yok"); header("Önbellek kontrolü: önbellek yok"); header("Pragma: önbellek yok"); header("Süre: 0"); if ($_GET["OriginUrl"]) $src=$_GET["OriginUrl"]; başka $src = $_SERVER['HTTP_REFERER']; $UA=$_SERVER["HTTP_USER_AGENT"]; $RenderParameters=$_GET["RenderParameters"]; function GoogleCheker($Ip){ # gereksiz aramayı önlemek için, yalnızca UA'nın şunlardan biriyle eşleşip eşleşmediğini kontrol edin. # sevdiğimiz botlar $hostname=gethostbyaddr($Ip); $ip_by_hostname=gethostbyname($hostname); if(preg_match("/googlebot/i",$hostname)) if ($ip_by_hostname == $Ip) true döndür; başka yanlış döndür; başka yanlış döndür; } function GoogleChekerExtend($Ip){ # gereksiz aramayı önlemek için, yalnızca UA'nın şunlardan biriyle eşleşip eşleşmediğini kontrol edin. # sevdiğimiz botlar $hostname=gethostbyaddr($Ip); $ip_by_hostname=gethostbyname($hostname); if(preg_match("/\.google\.com[\.]?$/i",$hostname)) if ($ip_by_hostname == $Ip) true döndür; başka yanlış döndür; başka yanlış döndür; } $botname="Başlat"; $bots = array('Mediapartners-Google[ /]([0-9.]{1,10})' => 'Google Mediapartners', 'Mediapartners-Google' => 'Google Mediapartners', 'Googl(e|ebot)(-Image)/([0-9.]{1,10})' => 'Google Görseli', 'Googl(e|ebot)(-Image)/' => 'Google Görseli', '^gsa-crawler' => 'Google', 'Googl(e|ebot)(-Site Haritaları)/([0-9.]{1,10})?' => 'Google-Site Haritaları', 'GSiteCrawler[ /v]*([0-9.az]{1,10})?' => 'Google-Site Haritaları', 'Googl(e|ebot)(-Site Haritaları)' => 'Google-Site Haritaları', 'Mobil.*Googlebot' => 'Google-Mobil', '^AdsBot-Google' => 'Google-AdsBot', '^Feedfetcher-Google' => 'Google-Feedfetcher', 'uyumlu; Google Desktop' => 'Google Desktop', 'Googlebot' => 'Googlebot'); foreach( $bots as $pattern => $bot ) { if ( preg_match( '#'.$pattern.'#i' , $UA) == 1 ) { $botname = preg_replace( "/\\s{1,}/i" , '-' , $bot ); kırmak; } } if(GoogleCheker($_SERVER['REMOTE_ADDR'])) $isGoogle="Gerçek"; elseif(GoogleChekerExtend($_SERVER['REMOTE_ADDR'])) $isGoogle="Uzat"; başka $isGoogle="Sahte"; sınıf BotTracker { statik işlev izi($s, $params){ $bot = ""; $veri = dizi( 'v' => 1, 'tid' => 'UA-XXXXXXX-1', 'cid' => self::generate_uuid(), 't' => 'olay', 'dh' => $s['HTTP_HOST'], 'dl' => $s['REQUEST_URI'], 'dr' => $s['HTTP_REFERER'], 'dp' => $s['REQUEST_URI'], 'dt' => $params['page_title'], 'ck' => $s['HTTP_USER_AGENT'], 'uip' => $s['REMOTE_ADDR'], 'ni' => 1, 'ec' => 'GoogleRenderHtaccess', 'el' => $params['UA']." - ".$params["RenderParameters"]." -" .$params['botname']." - ".$params['isGoogle']." - ip: ".$s['REMOTE_ADDR'], //testten sonra sil //'el' => $params['UA']." - ".$params["RenderParameters"]." -" .$params['botname']." - ".$params['isGoogle'] , 'ea' => $params['RenderedURL'] ); $url = 'http://www.google-analytics.com/collect'; $içerik = http_build_query($veri); $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $s['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 0); curl_setopt($ch, CURLOPT_TIMEOUT_MS, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded')); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_ENCODING , "gzip"); curl_setopt($ch, CURLOPT_POSTFIELDS, $içerik); $sonuç = curl_exec($ch); $bilgi= curl_getinfo($ch); curl_close($ch); } statik özel işlev oluştur_uuid() { dönüş sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0x0fff ) | 0x4000, mt_rand( 0, 0x3fff ) | 0x8000, mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) ); } } BotTracker::track($_SERVER, array("page_title"=>"VirtualRenderTitle","RenderedURL"=>$src,"isGoogle"=>$isGoogle,"botname"=>$botname,"UA"=>$UA ,"RenderParameters"=>$RenderParameters)); ?>
Kurulumumuzun Google Analytics'te çalışıp çalışmadığını kontrol edin
Her şey ayarlandı! Artık her şeyin beklendiği gibi çalışıp çalışmadığını kontrol edebiliriz. Bunu yapmak için Google Analytics'ten Gerçek zamanlı raporu kullanabilir ve "Olaylar" raporunu seçebiliriz. Başka bir sekmede, Search Console'u açarız, web sitemizin mülküne gideriz ve Google'ı URL'lerimizden herhangi birini taramaya ve oluşturmaya zorlamak için URL Denetçisini kullanırız. Her şey yolundaysa, Google Analytics gerçek zamanlı olaylar raporunda yeni olaylar göreceksiniz.
Göreceğiniz gibi, etkinlik “nonInteraction” parametresi ile yapılandırıldığı için bu etkinlikler sitemizde aktif kullanıcı olarak sayılmayacaktır.
“GoogleRenderFromHtaccess” etkinlik kategorisine tıklarsak, Kullanıcı Aracısını, IP'yi ve botun Gerçek veya Sahte olarak tanımlanıp tanımlanmadığını görebiliriz.
Bir URL oluşturmaya çalışırken Google tarafından oluşturulan izleme hataları
Hangi URL'lerin Google tarafından oluşturulduğunu nasıl izleyip kontrol edebileceğimizi zaten gördük. Ancak daha ileri gidebilir ve Google sitemizin URL'lerini oluşturmaya çalıştığında hangi Javascript hatalarının oluşturulduğunu takip edebiliriz.
Javascript oluşturulduğunda, yalnızca kullanıcının tarayıcısında görülebilen (ve bizim sunucumuzda görülmeyen) hatalar üretilebilir, bu nedenle bu hataları takip etmek kolay bir iş değildir.
Günümüzde, Googlebot URL'lerimizi oluşturduğunda hangi Javascript hatalarının oluştuğunu kontrol etmek istiyorsak, bunu yalnızca Search Console'daki URL Inspector'ı kullanarak yapabiliriz.
- Bir URL'yi inceleyin:
- "Canlı URL'yi Test Et"e tıklayın:
- Herhangi bir hata olup olmadığını kontrol edin:
Bunu birçok URL için manuel olarak yapmak çok fazla iştir, ancak Googlebot URL'lerimizi oluşturmaya çalıştığında herhangi bir Javascript hatası olup olmadığını izlemek için az önce gösterdiğim kodu kullanabiliriz.
Kodun çalışıp çalışmadığını kontrol etmek için bilerek oluşturulan bir hata örneği:
Javascript kodu ekle
Önceki örnekte yaptığımız gibi, bu kod satırını kullanarak herhangi bir Javascript hatasını yakalayacağız: "window.addEventListener('error', function(e)"
.
Her hata oluştuğunda, bu hataları kaydetmemizi ve Google Analytics'e göndermemizi sağlayacak bir işlev yürütülecektir. Bu, bu işlevin yalnızca bir Javascript hatası olduğunda yürütüleceği uyarısıyla önceki örnekte yaptığımıza çok benzer olacaktır.
window.addEventListener('hata', işlev(e) { var botPattern = "googlebot|Googlebot-Mobile|Googlebot-Image|Google favicon|Mediapartners-Google"; var re = new RegExp(botPattern, 'i'); var userAgent = navigator.userAgent; if (re.test(userAgent)) { var client = new XMLHttpRequest(); var ErrorsURLPixel='https://www.mecagoenlos.com/TransparentPixelGooglebotError.gif?OriginUrl='+window.location.href+'&textError='+unescape(encodeURIComponent(e.message))+'&LineError='+unescape(encodeURIComponent) (e.lineno.toString()))+'&UA='+unescape(encodeURIComponent(userAgent)); client.open('GET',ErrorsURLPixel); client.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8'); client.send(e); } });
Bu kod, başka bir şeffaf piksel (TransparentPixelGooglebotError.gif) yükleyecek, oluşturulan URL'yi, hatayı ve Kullanıcı Aracısını parametre olarak ekleyerek, aşağıdaki gibi bir URL'ye istek oluşturan işlevi yürütecektir:
var ErrorsURLPixel='https://www.mecagoenlos.com/TransparentPixelGooglebotError.gif?OriginUrl='+window.location.href+'&textError='+unescape(encodeURIComponent(e.message))+'&LineError='+unescape(encodeURIComponent) (e.lineno.toString()))+'&UA='+unescape(encodeURIComponent(userAgent));
Sunucu yapılandırması (.htaccess)
Önceki örnekte olduğu gibi, pikselin ne zaman yüklendiğini algılamak ve bir PHP dosyasını çalıştırmak için .htaccess'e bazı kurallar ekleyeceğiz:
RewriteCond %{REQUEST_URI} TransparentPixelGooglebotError.gif RewriteRule TransparentPixelGooglebotError.gif(.*)$ https://modelode.com/GooglebotErrorRenderJS.php$1
Bu şekilde “https://www.mecagoenlos.com/TransparentPixelGooglebotError.gif” istendiğinde “GooglebotErrorRenderJS.php” PHP dosyası çalıştırılacaktır.
PHP Dosyası
Bu PHP dosyası, Googlebot'un gerçek olup olmadığını kontrol edecek ve "ErrorsGoogleRender" kategorisine sahip bir olayı kullanarak, işlenen URL'yi olay Eylemi ve hatanın kendisini olay etiketi olarak kullanarak verileri Google Analytics'e gönderecektir.
<?php header("Pragma yönergesi: önbellek yok"); header("Önbellek yönergesi: önbellek yok"); header("Önbellek kontrolü: önbellek yok"); header("Pragma: önbellek yok"); header("Süre: 0"); if ($_GET["OriginUrl"]) $src=$_GET["OriginUrl"]; başka $src = $_SERVER['HTTP_REFERER']; $UA=$_SERVER["HTTP_USER_AGENT"]; $RenderParameters=$_GET["RenderParameters"]; $textError=$_GET["textError"]; $lineError=$_GET["LineError"]; function GoogleCheker($Ip){ # gereksiz aramayı önlemek için, yalnızca UA'nın şunlardan biriyle eşleşip eşleşmediğini kontrol edin. # sevdiğimiz botlar $hostname=gethostbyaddr($Ip); $ip_by_hostname=gethostbyname($hostname); if(preg_match("/googlebot/i",$hostname)) if ($ip_by_hostname == $Ip) true döndür; başka yanlış döndür; başka yanlış döndür; } function GoogleChekerExtend($Ip){ # gereksiz aramayı önlemek için, yalnızca UA'nın şunlardan biriyle eşleşip eşleşmediğini kontrol edin. # sevdiğimiz botlar $hostname=gethostbyaddr($Ip); $ip_by_hostname=gethostbyname($hostname); if(preg_match("/\.google\.com[\.]?$/i",$hostname)) if ($ip_by_hostname == $Ip) true döndür; başka yanlış döndür; başka yanlış döndür; } $botname="Başlat"; $bots = array('Mediapartners-Google[ /]([0-9.]{1,10})' => 'Google Mediapartners', 'Mediapartners-Google' => 'Google Mediapartners', 'Googl(e|ebot)(-Image)/([0-9.]{1,10})' => 'Google Görseli', 'Googl(e|ebot)(-Image)/' => 'Google Görseli', '^gsa-crawler' => 'Google', 'Googl(e|ebot)(-Site Haritaları)/([0-9.]{1,10})?' => 'Google-Site Haritaları', 'GSiteCrawler[ /v]*([0-9.az]{1,10})?' => 'Google-Site Haritaları', 'Googl(e|ebot)(-Site Haritaları)' => 'Google-Site Haritaları', 'Mobil.*Googlebot' => 'Google-Mobil', '^AdsBot-Google' => 'Google-AdsBot', '^Feedfetcher-Google' => 'Google-Feedfetcher', 'uyumlu; Google Desktop' => 'Google Desktop', 'Googlebot' => 'Googlebot'); foreach( $bots as $pattern => $bot ) { if ( preg_match( '#'.$pattern.'#i' , $UA) == 1 ) { $botname = preg_replace( "/\\s{1,}/i" , '-' , $bot ); kırmak; } } if(GoogleCheker($_SERVER['REMOTE_ADDR'])) $isGoogle="Gerçek"; elseif(GoogleChekerExtend($_SERVER['REMOTE_ADDR'])) $isGoogle="Uzat"; başka $isGoogle="Sahte"; sınıf BotTracker { statik işlev izi($s, $params){ $bot = ""; $veri = dizi( 'v' => 1, 'tid' => 'UA-XXXX-1', 'cid' => self::generate_uuid(), 't' => 'olay', 'dh' => $s['HTTP_HOST'], 'dl' => $s['REQUEST_URI'], 'dr' => $s['HTTP_REFERER'], 'dp' => $s['REQUEST_URI'], 'dt' => $params['page_title'], 'ck' => $s['HTTP_USER_AGENT'], 'uip' => $s['REMOTE_ADDR'], 'ni' => 1, 'ec' => 'ErrorsGoogleRender', 'el' => $params['textError']." (satır:".$params['lineError'].") - ".$params['UA']." - " .$params['botname' ]." - ".$params['isGoogle']."- ip: ".$s['REMOTE_ADDR'], //testten sonra sil //'el' => $params['UA']." - ".$params["RenderParameters"]." -" .$params['botname']." - ".$params['isGoogle'] , 'ea' => $params['RenderedURL'] ); $url = 'http://www.google-analytics.com/collect'; $içerik = http_build_query($veri); $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $s['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 0); curl_setopt($ch, CURLOPT_TIMEOUT_MS, 0); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded')); curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch,CURLOPT_ENCODING , "gzip"); curl_setopt($ch, CURLOPT_POSTFIELDS, $içerik); $sonuç = curl_exec($ch); $bilgi= curl_getinfo($ch); curl_close($ch); } statik özel işlev oluştur_uuid() { dönüş sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0x0fff ) | 0x4000, mt_rand( 0, 0x3fff ) | 0x8000, mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ) ); } } BotTracker::track($_SERVER, array("page_title"=>"VirtualRenderTitle","RenderedURL"=>$src,"isGoogle"=>$isGoogle,"botname"=>$botname,"UA"=>$UA ,"RenderParameters"=>$RenderParameters,"textError"=>$textError,"lineError"=>$lineError)); ?>
Artık Google, URL'lerimizi oluşturmaya çalıştığında hangi Javascript hatalarının olduğunu görebiliriz.
PHP dosyamızdan Google Analytics'e veri gönderin
Bu uygulamayla, Google URL'lerimizi oluşturmaya çalıştığında hangi belirli Javascript hatalarının oluşturulduğunu ve bunların hangi belirli URL'lerde gerçekleştiğini görebiliriz.
Aklımda, Googlebot'un bazı etkileşimleri (kaydırma, tıklama veya başka bir Javascript olayı gibi) deneyip denemediğini kontrol etmek gibi, Google'ın oluşturma süreciyle ilgili izleyecek birçok başka bilgi var, ancak bunu başka bir gönderide tutacağım. Umarım Beğenirsin!