web-dev-qa-db-ja.com

Google.comおよびclients1.google.com/generate_204

好奇心が強く、リクエストが「204 No Content」を返すことに気付いたからといって、firebugでのgoogle.comのNetアクティビティを調べていました。

204 No Contentは、主にユーザーエージェントのアクティブなドキュメントビューを変更せずにアクションの入力を許可することを目的としていますが、新しいまたは更新されたメタ情報は現在ユーザーエージェントのアクティブなドキュメントに適用されるべきです(SHOULD)ビュー。」なんでも。

JSソースコードを調べたところ、次のように「generate_204」が要求されていることがわかりました。

(new Image).src="http://clients1.google.com/generate_204"

変数の宣言/割り当ては一切ありません。

私の最初のアイデアは、Javascriptが有効かどうかを追跡するために使用されていたことです。しかし、とにかく「(new Image).src = '...'」の呼び出しは動的にロードされた外部JSファイルから呼び出されるので、それは無意味です。

ポイントが何であるかについてのアイデアは誰にもありますか?

[〜#〜] update [〜#〜]

「/ generate_204」は、多くのGoogleサービス/サーバー(maps.google.com/generate_204、maps.gstatic.com/generate_204など)で利用できるようです。

これを利用するには、Webアプリが使用する可能性のあるGoogleが所有する各サービスのgenerate_204ページをプリフェッチします。このような:

window.onload = function(){
    var two_o_fours = [
        // google maps domain ...
        "http://maps.google.com/generate_204",

        // google maps images domains ... 
        "http://mt0.google.com/generate_204",
        "http://mt1.google.com/generate_204",
        "http://mt2.google.com/generate_204",
        "http://mt3.google.com/generate_204",

        // you can add your own 204 page for your subdomains too!
        "http://sub.domain.com/generate_204"
    ];
    for(var i = 0, l = two_o_fours.length; i < l; ++i){
        (new Image).src = two_o_fours[i];
    }
};
42
David Murdoch

Snukkerが言ったように、clients1.google.comは検索候補の出所です。私の推測では、クライアントが必要とする前に、clients1.google.comをDNSキャッシュに強制するリクエストを行うため、最初の「実際の」リクエストでのレイテンシーが少なくなります。

Google Chromeは既にページ上のすべてのリンクに対してそれを行っています。ロケーションバーにアドレスを入力すると、これはすべてのブラウザに同じことをさせる方法のように思えます。 。

25
Matthew Crumley

Generate_204のgoogle'ingでAndroidはこれを使用して、WLANが開いている(応答204を受信して​​いる)閉じている(応答なし)またはブロックされている(リダイレクトする)キャプティブポータルに存在します)。その場合、WiFiへのログインが必要であるという通知が表示されます...enter image description here

34
Morphius

ChromeがSSL接続のタイムアウト、証明書エラー、またはキャプティブポータル(ホテルのWiFiネットワークなど)によって引き起こされる可能性のあるその他のネットワークの問題を検出した場合、ChromeはCookieなしのリクエストを http://www.gstatic.com/generate_204 に送信し、応答コードを確認します。そのリクエストがリダイレクトされる場合、Chromeログインページであると仮定して、リダイレクトターゲットを新しいタブで開きます。キャプティブポータル検出ページへのリクエストは記録されません。

フォント:Google Chrome Privacy Whitepaper

17
tonhozi

Googleはこれを使用して、デバイスがオンラインであるか、キャプティブポータルにあるかを検出します。

Chromium OSの接続マネージャーであるShillは、サービスが準備完了状態に移行するたびに、キャプティブポータル内にあるサービスの検出を試みます。キャプティブポータルにあるかオンラインであるかのこの決定は、Webページ http://clients3.google.com/generate_204 を取得しようとすることによって行われます。このよく知られたURLは、HTTPステータス204の空のページを返すことが知られています。何らかの理由でWebページが返されないか、204以外のHTTP応答が受信されると、shillはサービスをポータル状態としてマークします。

Google Chrome Privacy Whitepaper からの関連説明は次のとおりです。

ChromeがSSL接続のタイムアウト、証明書エラー、またはキャプティブポータル(ホテルのWiFiネットワークなど)によって引き起こされる可能性のあるその他のネットワークの問題を検出した場合、ChromeはCookieなしのリクエストを http://www.gstatic.com/generate_204 に送信し、応答コードを確認します。そのリクエストがリダイレクトされる場合、Chromeログインページであると仮定して、リダイレクトターゲットを新しいタブで開きます。キャプティブポータル検出ページへのリクエストは記録されません。

詳細: http://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection

10
Suresh

204レスポンスは、クリックとページアクティビティを追跡するためにAJAXで使用される場合があります。この場合、getリクエストでサーバーに渡される情報はcookieのみで、リクエストパラメータの特定の情報ではありません。したがって、ここではそうではないようです。

Clients1.google.comは、Google検索候補の背後にあるサーバーのようです。 http://www.google.com にアクセスすると、Cookieは http://clients1.google.com/generate_204 に渡されます。おそらく、これはサーバー上で何らかのセッションを開始するためですか?用途がどうであれ、それが非常に標準的な用途であるとは思えません。

5
Snukker

スパムと検索データベースのスクレイピングの両方を阻止するためのグーグルによる大規模な委任により、これはボットなどを追跡する取り組みの一環であると考えています。

いくつかの単純なアンチボット擬似はこのようになります。

On GET (google.*) Save RemoteEndPoint
{
    If RemoteEndPoint GETs (clients1.google.com/generate_204) Then
        Set botAlert_stage1 = false;
    Else
        Set botAlert_stage1 = true;
    End If
}

また、最新のGoogleフロントページの「テーマ」は、スパム/ボット対策を支援する新しいツールでもあると考えています。

**注** ipv6.google.comにもこのメジャーが含まれています。

根拠のない私の2つの2pだけです。

4
divinci

多くのアプリケーションはこのURLにアクセスして、キャプティブポータルにのみつながる接続があるかどうかを判断します。

キャプティブポータルは、これを「通常の」Webサイトと見なし、そのポータルサイトにリダイレクトし、ステータス200で返されます。アプリケーションが通常のWebサイトにアクセスしようとすると、まったく予期しない問題に直面します応答し、何が悪いのかを理解するのに問題があるかもしれません。ただし、このURLを使用すると簡単です。ステータス200を取得した場合、キャプティブポータル内にいるため、ユーザーに何かを行うように指示できます(通常はブラウザーを使用してポータルにログインするか、WiFiをオフにして依存します3Gで、電話を使用している場合)。ステータスが204になったら、Googleに接続しているので、アプリケーションは実際にインターネットに接続されています。

MicrosoftとAppleは少し異なるアプローチを使用します。両方ともステータス200の非常に具体的な短いテキストメッセージを返すURLをいくつか持っているため、GoogleのURLにアクセスする代わりに、たとえばcaptive.Apple.com」でステータス200をチェックします。data= "Success"以外は何もありません。ステータス200を取得し、そのデータとまったく同じではない場合、再びキャプティブポータルにいます。

3
gnasher729

このドキュメントでは次のことを説明しています。

http://docs.lib.purdue.edu/cgi/viewcontent.cgi?article=1417&context=ecetr&sei-redir=1

generate204を検索)

関連セクション:

さまざまなオブジェクトの中で、javascript関数は、ビデオを提供することになっているビデオサーバーに送信されたgenerate204要求をトリガーします。これにより、ビデオプリフェッチが開始されます。これには2つの主な目標があります。1つ目は、クライアントにビデオサーバー名のDNS解決を実行させることです。次に、ビデオサーバーへのTCP接続を強制的に開きます。どちらもビデオダウンロードフェーズの高速化に役立ちます。

さらに、generate204リクエストは、実際のビデオダウンロードリクエストとまったく同じ形式とオプションを持っているため、最終的にビデオサーバーはクライアントがおそらくすぐにそのビデオをダウンロードします。ビデオサーバーは、コマンドで示されているように、204 No Content応答で応答し、これまでにビデオコンテンツはダウンロードされないことに注意してください。

3
motobói

クリックを記録するために使用されることを説明するこのブログ投稿を見つけました。 Googleの公式Wordがなければ、さまざまなものを使用できます。

http://mark.koli.ch/2009/03/howto-configure-Apache-to-return-a-http-204-no-content-for-ajax.html

2
digitalsanctum

生成204は、検索基準の提案を動的にロードしている可能性があります。負荷テストスクリプトからわかるように、これは、ユーザーがテキストボックスに入力するたびに、すべてのサーバー呼び出しに対して責任があるようです。

0
Kranthi