17

これはばかげた質問かもしれませんが、ユーザーがGoogle検索ボックスに入力した内容をキャプチャして、これを使用してWebサイトのランディングページに動的ページを生成することはできますか?

たとえば、誰かがGoogleで「ホットドッグ」を検索し、私のサイトが検索結果のリンクの1つとして表示されたとします。ユーザーが自分のWebサイトに移動するリンクをクリックした場合、Googleの検索ボックスから「ホットドッグ」のテキストを何らかの方法で認識またはキャプチャして、ローカルデータベースでコンテンツを検索するスクリプトを呼び出すことができますか。ホットドッグに関連して、それを表示しますか?それは私には全く不可能に思えますが、私は本当に知りません。ありがとう。

4

8 に答える 8

24

私はこのようにします

$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
}
于 2009-06-02T19:43:24.110 に答える
17

これは古い質問であり、元の質問が質問されて回答されてから回答が変更されています。2011年10月の時点で、GoogleはGoogleアカウントにログインしているすべての人のためにこの紹介情報を暗号化しています:http://googleblog.blogspot.com/2011/10/making-search-more-secure.html

Googleにログインしていないユーザーの場合、検索キーワードは引き続き参照URLにあり、上記の回答が引き続き適用されます。ただし、認証されたGoogleユーザーの場合、Webサイトで検索キーワードを表示する方法はありません。

ただし、専用のランディングページを作成することで、インテリジェントな推測が可能になる場合があります。(「ジャバ・ザ・ハットの威厳のある木炭スケッチ」ページへの訪問者はおそらく...まあ、正気ではありません。)

于 2012-04-06T23:07:58.860 に答える
13

はい、可能です。HTTPヘッダーリファラーを参照してください。リファラーヘッダーには、Google検索結果ページのURLが含まれます。

ユーザーがGoogle検索結果ページのリンクをクリックすると、ブラウザは次の種類のHTTPヘッダーを使用してサイトにリクエストを送信します。

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

リクエストヘッダーからURLを解析するだけで、ユーザーが使用する検索語はqパラメーターになります。上記の例で使用されている検索用語は「httpヘッダーリファラー」です。

同じ種類のアプローチは通常、他の検索エンジンでも機能します。リファラーヘッダーに異なる種類のURLがあるだけです。

この回答は、これをPHPで実装する方法を示しています。


リファラーヘッダーはHTTP1.1でのみ使用できますが、これはほぼすべての最新のブラウザーを対象としています。ブラウザがリファラーヘッダーを偽造したり、ヘッダーが完全に欠落している可能性もあるため、リファラーヘッダーに基づいてあまり深刻な乾燥を行わないでください。

于 2009-06-02T19:37:06.230 に答える
6

これは古い質問ですが、デフォルトではすべてのユーザーをhttpsにリダイレクトし、「q」パラメータを提供しないため、Googleはクエリ用語を提供しないことがわかりました。誰かが手動でhttp(http://google.com)を使用してgoogle urlを入力してから検索しない限り、現時点では「q」パラメータを取得する方法はありません。

于 2012-11-15T11:23:10.250 に答える
1

はい、それは次のURLに含まれています。

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

ここに例があります:

グーグルはあなたのサイトに多くの訪問者を送ります、あなたが彼らがあなたのサイトに来たのに使用したキーワードを手に入れたいなら、多分それをページに表示して彼らを感動させるか、あるいは単にデータベースにキーワードを保存するために、ここにPHPコードIがあります使用する :

// 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.
于 2009-06-02T19:37:17.697 に答える
0

参照URLを取得し、クエリ文字列から検索語を取得できます。検索は「q=searchTerm」としてクエリに含まれます。ここで、searchTermは必要なテキストです。

于 2009-06-02T19:38:25.713 に答える
0

同じことですが、エラー処理があります

<?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"; }
?>
于 2011-09-20T00:23:15.260 に答える
0

申し訳ありませんが、もう少し
Bing、Yahoo、Altavistaのサポートを追加します

<?php
if (@$_SERVER['HTTP_REFERER']) {
    $referringPage = parse_url($_SERVER['HTTP_REFERER']);
    if (stristr($referringPage['host'], 'google.')
        || stristr($referringPage['host'], 'bing.')
        || stristr($referringPage['host'], 'yahoo.')) {
            parse_str( $referringPage['query'], $queryVars );
            if (stristr($referringPage['host'], 'google.')
                || stristr($referringPage['host'], 'bing.')) { $search = $queryVars['q']; }
                        else if (stristr($referringPage['host'], 'yahoo.')) { $search =     $queryVars['p']; }
                        else { $search = false; }
            if ($search) { $search = str_replace("+"," ",$search); }}
            else { $search = false; }}
else { $search = false; }
if ($search) { echo "You're in the right place for ".$search; }
?>
于 2011-09-20T00:44:33.853 に答える