Google.com and clients1.google.com/generate_204

141,404

Solution 1

Like Snukker said, clients1.google.com is where the search suggestions come from. My guess is that they make a request to force clients1.google.com into your DNS cache before you need it, so you will have less latency on the first "real" request.

Google Chrome already does that for any links on a page, and (I think) when you type an address in the location bar. This seems like a way to get all browsers to do the same thing.

Solution 2

I found this old Thread while google'ing for generate_204 as Android seems to use this to determine if the wlan is open (response 204 is received) closed (no response at all) or blocked (redirect to captive portal is present). In that case a notification is shown that a log-in to WiFi is required...enter image description here

Solution 3

In the event that Chrome detects SSL connection timeouts, certificate errors, or other network issues that might be caused by a captive portal (a hotel's WiFi network, for instance), Chrome will make a cookieless request to http://www.gstatic.com/generate_204 and check the response code. If that request is redirected, Chrome will open the redirect target in a new tab on the assumption that it's a login page. Requests to the captive portal detection page are not logged.

Source: Google Chrome Privacy Whitepaper

Solution 4

Google is using this to detect whether the device is online or in captive portal.

Shill, the connection manager for Chromium OS, attempts to detect services that are within a captive portal whenever a service transitions to the ready state. This determination of being in a captive portal or being online is done by attempting to retrieve the webpage http://clients3.google.com/generate_204. This well known URL is known to return an empty page with an HTTP status 204. If for any reason the web page is not returned, or an HTTP response other than 204 is received, then shill marks the service as being in the portal state.

Here is the relevant explanation from the Google Chrome Privacy Whitepaper:

In the event that Chrome detects SSL connection timeouts, certificate errors, or other network issues that might be caused by a captive portal (a hotel's WiFi network, for instance), Chrome will make a cookieless request to http://www.gstatic.com/generate_204 and check the response code. If that request is redirected, Chrome will open the redirect target in a new tab on the assumption that it's a login page. Requests to the captive portal detection page are not logged.

More info: http://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection

Solution 5

204 responses are sometimes used in AJAX to track clicks and page activity. In this case, the only information being passed to the server in the get request is a cookie and not specific information in request parameters, so this doesn't seem to be the case here.

It seems that clients1.google.com is the server behind google search suggestions. When you visit http://www.google.com, the cookie is passed to http://clients1.google.com/generate_204. Perhaps this is to start up some kind of session on the server? Whatever the use, I doubt it's a very standard use.

Share:
141,404

Related videos on Youtube

David Murdoch
Author by

David Murdoch

I'm an Ethereum enthusiast and Software Development Lead at Truffle. I'm the core contributor to Ganache. I'm a husband, father of 2, have 6 siblings, enjoying traveling, and can solve a Rubik's Cube in under 2 minutes. I play bass, guitar, piano, and a little drums. I'm a terrible singer. I drive a 90's M3 because I enjoy fixing things.

Updated on September 13, 2020

Comments

  • David Murdoch
    David Murdoch almost 4 years

    I was looking into google.com's Net activity in firebug just because I was curious and noticed a request was returning "204 No Content."

    It turns out that a 204 No Content "is primarily intended to allow input for actions to take place without causing a change to the user agent's active document view, although any new or updated metainformation SHOULD be applied to the document currently in the user agent's active view." Whatever.

    I've looked into the JS source code and saw that "generate_204" is requested like this:

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

    No variable declaration/assignment at all.

    My first idea is that it was being used to track if Javascript is enabled. But the "(new Image).src='...'" call is called from a dynamically loaded external JS file anyway, so that would be pointless.

    Anyone have any ideas as to what the point could be?

    UPDATE

    "/generate_204" appears to be available on many google services/servers (e.g., maps.google.com/generate_204, maps.gstatic.com/generate_204, etc...).

    You can take advantage of this by pre-fetching the generate_204 pages for each google-owned service your web app may use. Like This:

    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];
        }
    };
    
    • mykhal
      mykhal over 14 years
      well, why create empty image offline, if we can get one online from google? :)
    • Eric Muyser
      Eric Muyser over 14 years
      Maybe the external JS file is used somewhere else not dynamically? I don't really know, seems to have something to do with debugging and/or proxies?
    • David Murdoch
      David Murdoch over 14 years
      @mykhal: What? @Eric Muyser: I doubt the JS is used elsewhere, and if it was - detecting if JS was enabled would happen when the file was requested.
  • Bosti Andrei
    Bosti Andrei over 14 years
    By the way, try clicking "I'm feeling lucky" when the search box is empty. If you do this on new year's day, you may get a surprise
  • David Murdoch
    David Murdoch over 14 years
    Great answer! I'll probably end up marking this as correct if no-one comes by with an official answer soon. Now I've got to try to find a useful way of using it! THANKS!
  • Matthew Flaschen
    Matthew Flaschen over 14 years
    The google.com/csi URL returns 204, and seems to be used for tracking. But I don't think it has any connection to generate_204 (the URL the question asks about)
  • mykhal
    mykhal over 14 years
    i don't think it makes any sense :)
  • bjornl
    bjornl almost 12 years
    why downvote? he's got a valid point. speculation, but that's all we can do since we can't reliably know what Google uses their 204's for.
  • Chibueze Opata
    Chibueze Opata over 11 years
    My browser automatically opens gstatic.com/generate_204 when I'm browsing. Doesn't really seem like the same scenario here?
  • HeyWatchThis
    HeyWatchThis over 11 years
    How do they know this is happening on Android. Is the traffic being sniffed. Do you have a source. But that's cool to use a low overhead method here. No chainsaw fly swatters.
  • paulw1128
    paulw1128 over 11 years
    Agreed - seen this behaviour on android and desktop Chrome. The generate_204 address can be seen in the address bar when responding to the 'Log in to WiFi network required' prompt.
  • Jestem_z_Kozanowa
    Jestem_z_Kozanowa almost 11 years
    I got this error when I was playing around with Hotspotsystem and was using Android phone.
  • dalore
    dalore about 10 years
    It's to test if you actually have an internet connection. When you are on a wifi accessing any webpage might still generate a 200 ok response but show you a different webpage to the one you created. Google tests this by trying to get a url that will generate a 204 and if that succeeds they know you are actually online (rather than on a broken hotspot)
  • Chiperific
    Chiperific about 10 years
    I came across the 'generate 204' when I was logging into a hotel Wifi. The wifi was unsecured, but required a username and password through a hotel website that only appeared when I first tried to navigate to a page. Chrome threw a clients3.google.com/generate_204 to bring up the hotel website that allowed me to log in. I've since seen this many times (mostly on my Android when using Chrome) when there is no WPA, but there is an authentication process.
  • btwiuse
    btwiuse over 6 years
    The related source code is found here cs.chromium.org/search/?q=kRestrictiveProxyURL&type=cs
  • Suraj Jain
    Suraj Jain almost 6 years
    @DavidMurdoch Read the other answer too. They refer official source.
  • xdevs23
    xdevs23 about 3 years
    In AOSP source code, this is defined in frameworks/base/services/core/java/com/android/server/Connec‌​tivityService.java