web-dev-qa-db-fra.com

Google.com et clients1.google.com/generate_204

Je cherchais l'activité de google.com sur le net dans Firebug juste parce que j'étais curieux et que j'avais remarqué qu'une demande renvoyait "204 Pas de contenu".

Il s'avère qu'un 204 Aucun contenu "est principalement destiné à permettre la saisie d'actions à effectuer sans provoquer de modification de la vue active du document de l'agent utilisateur, bien que toute métainformation nouvelle ou mise à jour DEVRAIT être appliquée au document actuellement dans l'agent actif de l'agent utilisateur. vue." Peu importe.

J'ai regardé le code source JS et j'ai vu que "generate_204" était demandé comme ceci:

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

Aucune déclaration/affectation de variable du tout.

Ma première idée est qu'il était utilisé pour suivre si Javascript est activé. Mais l'appel "(new Image) .src = '...'" est appelé à partir d'un fichier JS externe chargé dynamiquement de toute façon, ce serait donc inutile.

Quelqu'un a-t-il des idées sur ce que pourrait être le point?

MISE À JOUR

"/ generate_204" semble être disponible sur de nombreux services/serveurs Google (par exemple, maps.google.com/generate_204, maps.gstatic.com/generate_204, etc ...).

Vous pouvez en profiter en récupérant à l'avance les pages generate_204 pour chaque service appartenant à Google que votre application Web peut utiliser. Comme ça:

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

Comme l'a dit Snukker, clients1.google.com est à l'origine des suggestions de recherche. Je suppose qu'ils font une demande pour forcer clients1.google.com dans votre cache DNS avant d'en avoir besoin, vous aurez donc moins de latence sur la première "vraie" demande.

Google Chrome le fait déjà pour tous les liens sur une page, et (je pense) lorsque vous tapez une adresse dans la barre d'adresse. Cela semble être un moyen pour que tous les navigateurs fassent la même chose. .

25
Matthew Crumley

J'ai trouvé cet ancien thread pendant que Google recherchait pour generate_204 comme Android semble utiliser cela pour déterminer si le WLAN est ouvert (la réponse 204 est reçue) fermé (aucune réponse du tout) ou bloqué (redirection) dans le portail captif est présent.) Dans ce cas, une notification est affichée qu'une connexion au WiFi est nécessaire ...enter image description here

34
Morphius

Dans le cas où Chrome détecte les délais d'expiration de connexion SSL, les erreurs de certificat ou d'autres problèmes de réseau qui pourraient être causés par un portail captif (le réseau WiFi d'un hôtel, par exemple), Chrome fera une demande sans cookie à http://www.gstatic.com/generate_204 et vérifiera le code de réponse. Si cette demande est redirigée, Chrome ouvrira la cible de redirection dans un nouvel onglet en supposant qu'il s'agit d'une page de connexion. Les requêtes vers la page de détection du portail captif ne sont pas enregistrées.

Police: Google Chrome Livre blanc sur la confidentialité

17
tonhozi

Google l'utilise pour détecter si l'appareil est en ligne ou dans un portail captif.

Shill, le gestionnaire de connexions pour Chromium OS, tente de détecter les services qui se trouvent dans un portail captif chaque fois qu'un service passe à l'état prêt. Cette détermination d'être dans un portail captif ou d'être en ligne se fait en tentant de récupérer la page Web http://clients3.google.com/generate_204 . Cette URL bien connue est connue pour renvoyer une page vide avec un état HTTP 204. Si, pour une raison quelconque, la page Web n'est pas renvoyée ou si une réponse HTTP autre que 204 est reçue, Shill marque le service comme étant à l'état de portail.

Voici l'explication pertinente du Google Chrome Livre blanc sur la confidentialité :

Dans le cas où Chrome détecte les délais d'expiration de connexion SSL, les erreurs de certificat ou d'autres problèmes de réseau qui pourraient être causés par un portail captif (le réseau WiFi d'un hôtel, par exemple), Chrome fera une demande sans cookie à http://www.gstatic.com/generate_204 et vérifiera le code de réponse. Si cette demande est redirigée, Chrome ouvrira la cible de redirection dans un nouvel onglet en supposant qu'il s'agit d'une page de connexion. Les demandes à la page de détection du portail captif ne sont pas enregistrées.

Plus d'informations: http://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection

10
Suresh

204 réponses sont parfois utilisées dans AJAX pour suivre les clics et l'activité des pages. Dans ce cas, la seule information transmise au serveur dans la demande get est un cookie et non des informations spécifiques dans les paramètres de la demande, donc cela ne semble pas être le cas ici.

Il semble que clients1.google.com soit le serveur derrière les suggestions de recherche Google. Lorsque vous visitez http://www.google.com , le cookie est transmis à http://clients1.google.com/generate_204 . Peut-être est-ce pour démarrer une sorte de session sur le serveur? Quelle que soit l'utilisation, je doute que ce soit une utilisation très standard.

5
Snukker

avec le mandat massif de google pour arrêter à la fois le spam et le raclage de leur base de données de recherche, je pense que cela fait partie de l'effort de suivi des bots, etc.

un pseudo anti bot simple pourrait aller comme ça.

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
}

Je crois également que le dernier "thème" de la première page de Google est également un nouvel outil pour aider avec l'activité anti-spam/bot.

** REMARQUE ** ipv6.google.com inclut également cette mesure.

Juste mes deux 2p non éprouvés non fondés.

4
divinci

De nombreuses applications accèdent à cette URL pour déterminer si elles ont une connexion qui mène uniquement à un portail captif.

L'idée est que tout portail captif pense qu'il s'agit d'un site Web "normal", puis vous redirige vers son site portail, qui est renvoyé avec un statut 200. Si une application tente d'accéder à un site Web normal, elle est confrontée à un réponse et peut avoir des problèmes pour comprendre ce qui ne va pas. Cependant, avec cette URL, c'est facile: si vous obtenez le statut 200, vous êtes à l'intérieur d'un portail captif et vous pouvez dire à votre utilisateur de faire quelque chose (généralement, connectez-vous au portail à l'aide d'un navigateur ou désactivez le WiFi et comptez en 3G, s'ils utilisent un téléphone). Si vous obtenez le statut 204, vous vous êtes connecté à Google, donc votre application est réellement connectée à Internet.

Microsoft et Apple utilisent une approche légèrement différente; ils ont tous deux des URL qui renvoient un court message texte très spécifique avec un état 200, donc au lieu d'accéder à l'URL de Google, vous pouvez par exemple aller à " captive.Apple.com "et vérifiez le statut 200 avec data =" Success "et rien d'autre. Si vous obtenez le statut 200 et pas exactement ces données, vous êtes à nouveau dans un portail captif.

3
gnasher729

Ce document explique:

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

( Recherchez generate204)

Section pertinente:

Parmi les différents objets, une fonction javascript déclenche une requête generate204 envoyée au serveur vidéo censé servir la vidéo. Cela démarre la prélecture vidéo, qui a deux objectifs principaux: premièrement, elle oblige le client à effectuer la résolution DNS du nom du serveur vidéo. Deuxièmement, il oblige le client à ouvrir une connexion TCP vers le serveur vidéo. Les deux aident à accélérer la phase de téléchargement vidéo.

De plus, la demande generate204 a exactement le même format et les mêmes options que la demande de téléchargement de vidéo réelle, de sorte que le serveur vidéo est finalement averti qu'un client peut-être télécharger cette vidéo très bientôt. Notez que le serveur vidéo répond par un 204 No Content réponse, comme l'indique la commande, et aucun contenu vidéo n'est téléchargé à ce jour.

3
motobói

J'ai trouvé ce billet de blog qui explique qu'il est utilisé pour enregistrer les clics. Sans Word officiel de Google, il pourrait être utilisé un certain nombre de choses.

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

2
digitalsanctum

Le générateur 204 pourrait charger dynamiquement les suggestions de critères de recherche. Comme je peux le voir dans mon script de test de charge, cela est apparemment responsable de chaque appel de serveur chaque fois que l'utilisateur tape dans la zone de texte

0
Kranthi