Google aramadan arama terimini yakalamak mümkün mü?

7 Cevap php

Bu aptal bir soru olabilir, ancak bu sonra benim Web sitesinde açılış sayfasında dinamik bir sayfa oluşturmak için kullanılabilir, böylece ne bir Google arama kutusuna yazdığınız bir kullanıcı yakalamak mümkün mü?

Örneğin, birisi "hot dog" için Google arama, ve benim site arama sonucu bağlantılardan biri olarak gelir diyelim. Kullanıcı benim Web sitesine yönlendiren bağlantıyı tıklarsa bana bir şekilde bilmek ya da Google arama kutusundan "hot dog" metin yakalamak için ben içerik için yerel veritabanı arar bir komut arayabilir, böylece, bu, mümkün sosisli ile ilgili, ve o görüntüler? Bu tamamen bana imkansız gibi görünüyor, ama ben gerçekten bilmiyorum. Teşekkürler.

7 Cevap

Evet, bu mümkün değildir. HTTP başlığını bakın Referer. Referans başlığı Google arama sonuç sayfasının URL'sini içerir.

Kullanıcının bir Google arama sonucu sayfasında bir bağlantıyı tıkladığında, tarayıcı HTTP başlığının bu tür sitenize bir istekte bulunur:

Referer: http://www.google.fi/search?hl=en&q=http+header+referer&btnG=Google-search&meta=&aq=f&oq=

Sadece istek başlığındaki URL ayrıştırma, kullanıcı tarafından kullanılan arama terimi q-parametre olacaktır. Yukarıdaki örnekte kullanılan ara şekliyle "http header referer" dir.

Yaklaşım aynı tür genellikle diğer arama motorları için de çalışır, onlar sadece Referer başlığı URL'den farklı tür var.

Bu answer PHP, bu nasıl uygulanacağını gösterir.


Referans başlık HTTP 1.1 ile kullanılabilir, ama bu sadece herhangi biraz modern tarayıcı hakkında kapsar. Tarayıcı ayrıca Referans başlığını ya da başlık tamamen eksik olabilir sahte olabilir, bu nedenle Referer başlığına dayanan çok ciddi Kararlarında yapmazlar.

Ben böyle yapardım

$referringPage = parse_url( $_SERVER['HTTP_REFERER'] );
if ( stristr( $referringPage['host'], 'google.' ) )
{
  parse_str( $referringPage['query'], $queryVars );
  echo $queryVars['q']; // This is the search term used
}

Bu eski bir soru ve özgün soru sordu ve cevap beri cevap değişti. Ekim 2011 itibarıyla Google bir Google hesabına giriş herkes için bu başvuru bilgileri şifreleyerek: http://googleblog.blogspot.com/2011/10/making-search-more-secure.html

Google'da oturum açmış kullanıcılar değil, arama anahtar kelimeleri hala sevk URL bulunan ve yukarıdaki cevapları hala geçerli edilir. Ancak, kimliği doğrulanmış Google kullanıcıları için, kendi arama anahtar kelimeleri görmek için bir web sitesi için hiçbir yolu yoktur.

Ancak, özel açılış sayfaları oluşturarak yine akıllı bir tahmin yapmak mümkün olabilir. ("Jabba Ağırbaşlı karakalem eskiz Hutt" sayfasında ziyaretçileri, iyi ... muhtemelen deli.)

Bu eski bir soru ama ben varsayılan olarak size "q" parametre vermeyecektir https her kullanıcıyı yönlendirir, çünkü google artık sorgu terimi verir öğrendim. Birisi el http (http://google.com) ile google url girer ve daha sonra arar sürece, "q" parametre almak için şimdi hiçbir yolu yoktur.

Muhammed.

Evet, url geliyor:

http://www.google.com/search?hl=es&q=hot+dog&lr=&aq=f&oq=

Burada bir örnek:

Google sends many visitors to your site, if you want to get the keywords they used to come to your site, maybe to impress them by displaying it back on the page, or just to store the keyword in a database, here's the PHP code I use :

// take the referer
$thereferer = strtolower($_SERVER['HTTP_REFERER']);
// see if it comes from google
if (strpos($thereferer,"google")) {
    // delete all before q=
    $a = substr($thereferer, strpos($thereferer,"q=")); 	
    // delete q=
    $a = substr($a,2);
    // delete all FROM the next & onwards
    if (strpos($a,"&")) {
    	$a = substr($a, 0,strpos($a,"&"));
    }	
    // we have the results.
    $mygooglekeyword = urldecode($a);
}

and we can use <?= $mygooglekeywords ?> when we want to output the
keywords.

Aynı şey, ama bazı hata işleme

<?php
if (@$_SERVER['HTTP_REFERER']) {
    $referringPage = parse_url($_SERVER['HTTP_REFERER']);
    if (stristr($referringPage['host'], 'google.')) {
        parse_str( $referringPage['query'], $queryVars );
        $google = $queryVars['q'];
        $google = str_replace("+"," ",$google); }
    else { $google = false; }}
else { $google = false; }

if ($google) { echo "You searched for ".$google." at Google then came here!"; }
else { echo "You didn't come here from Google"; }
?>

Sen atıfta URL kapmak ve sorgu dizesinden arama terimini yakalayabilir. Arama searchTerm istediğiniz metin "q = SEARCHTERM" olarak sorguda olacaktır.