11

つい最近2日前に、次のコードがgoogleから検索クエリを取得するために機能しました。

$refer = parse_url($_SERVER['HTTP_REFERER']);
$host = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
$query = parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY);

if(strstr($host,'www.google.com'))
{
    //do google stuff
    $qstart = strpos($query, 'q=') +2;
    $qend = strpos($query, '&', $qstart);
    $qlength = $qend - $qstart;
    $querystring = substr($query, $qstart, $qlength);
    $querystring = str_replace('q=','',$querystring);
    $keywords = explode('%20',$querystring);
    $keywords = implode(' ', $keywords);
    return $keywords;                      
    }

しかし、今はそうではありません。echo($ query)を使用してテストしましたが、Googleがリファラークエリリクエストを処理する方法が変更されたようです。以前は$queryが含まれていました

"q=term1%20term2%20term3%20...

ただし、$ queryがエコーされると、次の出力が得られます。

sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCsQFjAB&url=http%3A%2F%2Fexample.com%2F&ei=vDA-UNnxHuOjyAHlloGYCA&usg=AFQjCNEvzNXHULR0OvoPMPSWxIlB9-fmpg&sig2=iPinsBaCFuhCLGFf0JHAsQ

これを回避する方法はありますか?

4

4 に答える 4

12

申し訳ありませんが、それは世界的なGoogleの政治の変化です。

Webリンクを参照してください

http://googlewebmastercentral.blogspot.ru/2012/03/upcoming-changes-in-googles-http.html

これは、ユーザーがGoogleアカウントにサインインした場合を意味します。自分で試すことができます。Google検索のURLがhttps://で始まる場合、これは、プライバシーのためにGoogleがいくつかのスクラッチパラメータを非表示にすることを意味します。

于 2013-04-04T04:52:42.570 に答える
1

私も今週同じ問題に遭遇しました。これがまだあなたに関係があるかどうかはわかりませんが、Googleが約1年前にサインインしたユーザーのSSL(Secure Sockets Layer)検索を開始し、SSL検索が現在に適用されている可能性があることがわかりましたすべてのGoogle検索クエリ。これをテストしたとき、私はGoogleにサインインしておらず、Firefoxを使用していましたが、暗号化された参照クエリを取得しました。

この記事には、特定の検索用語データなしで作業するためのいくつかの役立つ背景といくつかのアイデアがあります:http ://searchenginewatch.com/article/2227114/5-Tips-for-Handling-Not-Provided-Data

于 2013-01-18T19:52:13.693 に答える
1
    // 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);
}
于 2013-12-23T05:19:25.093 に答える
0

Googleはすべての検索に対してSSLを開始し、情報はGoogleAnalyticsを介してのみ利用可能です。ただし、Google、Bing、Yahooなどの有料キャンペーンの検索エンジンでは、utm_parametersなどのクエリ文字列パラメーターを使用し、パラメーターutm_termから検索クエリにアクセスできます。

于 2018-01-04T19:17:57.860 に答える