Google.com și clients1.google.com/generate_204 (Programare, Javascript, Http, Http Headers)

David Murdoch a intrebat.
a intrebat.

Mă uitam la activitatea netă a google.com în firebug doar pentru că eram curios și am observat că o cerere returna „204 No Content”.

Se pare că un 204 No Content „este destinat în primul rând să permită introducerea de date pentru ca acțiunile să aibă loc fără a provoca o modificare a vizualizării active a documentului agentului utilizator, deși orice metainformație nouă sau actualizată TREBUIE să fie aplicată documentului aflat în prezent în vizualizarea activă a agentului utilizator.” În fine.

M-am uitat în codul sursă JS și am văzut că „generate_204” este solicitat astfel:

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

Nu există nicio declarație/atribuire de variabile.

Prima mea idee este că era folosită pentru a urmări dacă Javascript este activat. Dar apelul „(new Image).src=’…’..'” este oricum apelat dintr-un fișier JS extern încărcat dinamic, așa că ar fi inutil.

Are cineva vreo idee despre care ar putea fi scopul?

UPDATE

„/generate_204” pare să fie disponibil pe multe servicii/servere Google (de exemplu, maps.google.com/generate_204, maps.gstatic.com/generate_204, etc…).

Puteți profita de acest lucru prin preluarea în prealabil a paginilor generate_204 pentru fiecare serviciu deținut de google pe care aplicația dvs. web îl poate utiliza. Astfel:

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];
    }
};

Comentarii

  • ei bine, de ce să creăm o imagine goală offline, dacă putem obține una online de la google? 🙂 –  > Por mykhal.
  • Poate că fișierul JS extern este folosit în altă parte, nu în mod dinamic? Nu prea știu, se pare că are legătură cu depanarea și/sau proxies? –  > Por Eric Muyser.
  • @mykhal: Ce? @Eric Muyser: Mă îndoiesc că JS este folosit în altă parte, iar dacă ar fi fost – detectarea dacă JS este activat s-ar fi întâmplat atunci când fișierul a fost solicitat. –  > Por David Murdoch.
11 răspunsuri
Matthew Crumley

După cum a spus Snukker, clients1.google.com este locul de unde provin sugestiile de căutare. Bănuiala mea este că ei fac o cerere pentru a forța clients1.google.com în memoria cache DNS înainte de a avea nevoie de ea, astfel încât să aveți mai puțină latență la prima cerere „reală”.

Google Chrome face deja acest lucru pentru orice link de pe o pagină și (cred) atunci când introduceți o adresă în bara de localizare. Aceasta pare a fi o modalitate de a face ca toate browserele să facă același lucru.

Comentarii

  • Un răspuns excelent! Probabil că voi ajunge să îl marchez ca fiind corect dacă nimeni nu vine cu un răspuns oficial în curând. Acum trebuie să încerc să găsesc o modalitate utilă de utilizare a acestuia! MULȚUMIRI! –  > Por David Murdoch.
  • nu cred că are niciun sens 🙂 –  > Por mykhal.
  • Browserul meu deschide automat gstatic.com/generate_204 atunci când navighez. Nu prea pare a fi același scenariu aici? –  > Por Chibueze Opata.
  • 17

  • Este pentru a testa dacă ai într-adevăr o conexiune la internet. Atunci când sunteți pe un wifi care accesează orice pagină web s-ar putea să genereze în continuare un răspuns 200 ok, dar să vă arate o pagină web diferită de cea pe care ați creat-o. Google testează acest lucru încercând să obțină o adresă URL care să genereze un 204 și, dacă reușește, știe că sunteți de fapt online (și nu pe un hotspot defect).  > Por dalore.
  • @DavidMurdoch Citiți și celălalt răspuns. Ei fac referire la sursa oficială. –  > Por Suraj Jain.
Morphius

Am găsit acest thread vechi în timp ce căutam pe Google generate_204, deoarece Android pare să folosească acest lucru pentru a determina dacă wlan-ul este deschis (se primește răspunsul 204), închis (niciun răspuns) sau blocat (există o redirecționare către portalul captiv). În acest caz, este afișată o notificare care indică faptul că este necesară o logare la WiFi…

Comentarii

  • De unde știu că acest lucru se întâmplă pe Android. Este traficul fiind adulmecat. Aveți o sursă. Dar e mișto să folosești o metodă cu costuri reduse aici. Fără drujbe de zburătoare. –  > Por HeyWatchThis.
  • De acord – am văzut acest comportament pe Android și pe desktop Chrome. Adresa generate_204 poate fi văzută în bara de adrese atunci când răspundeți la solicitarea „Log in to WiFi network required”. –  > Por paulw1128.
  • Am primit această eroare când mă jucam cu Hotspotsystem și foloseam un telefon Android. –  > Por Jestem_z_Kozanowa.
  • Am dat peste „generează 204” când m-am logat la Wifi-ul unui hotel. Wifi-ul era nesecurizat, dar necesita un nume de utilizator și o parolă prin intermediul unui site web al hotelului care a apărut doar când am încercat să navighez prima dată pe o pagină. Chrome a aruncat un clients3.google.com/generate_204 pentru a afișa site-ul hotelului care mi-a permis să mă loghez. De atunci am văzut acest lucru de multe ori (mai ales pe Android-ul meu atunci când folosesc Chrome) atunci când nu există WPA, dar există un proces de autentificare. –  > Por Chiperific.
tonhozi

În cazul în care Chrome detectează timeout-uri ale conexiunii SSL, erori de certificat sau alte probleme de rețea care ar putea fi cauzate de un captiveportal (rețeaua WiFi a unui hotel, de exemplu), Chrome va face o cerere acookieless către http://www.gstatic.com/generate_204 și va verifica codul de răspuns. Dacă această cerere este redirecționată, Chrome va deschide ținta directă într-o filă nouă, presupunând că este vorba de o pagină de autentificare.Cererile către pagina de detectare a portalului captiv nu sunt înregistrate.

Sursă: Google Chrome Privacy Whitepaper

Suresh

Google folosește acest lucru pentru a detecta dacă dispozitivul este online sau în portalul captiv.

Shill, managerul de conexiuni pentru Chromium OS, încearcă să detecteze serviciile care se află în cadrul unui portal captiv ori de câte ori un serviciu trece la starea „gata”. Această determinare a faptului că se află într-un portal captiv sau că este online se face prin încercarea de a prelua pagina web http://clients3.google.com/generate_204. Se știe că acest URL bine cunoscut returnează o pagină goală cu starea HTTP 204. Dacă, din orice motiv, pagina web nu este returnată sau dacă se primește un răspuns HTTP altul decât 204, atunci shill marchează serviciul ca fiind în starea de portal.

Iată explicația relevantă din documentul Google Chrome Privacy Whitepaper:

În cazul în care Chrome detectează întârzieri ale conexiunii SSL, erori de certificat sau alte probleme de rețea care ar putea fi cauzate de un portal captiv (rețeaua WiFi a unui hotel, de exemplu), Chrome va face o cerere fără cookieless către http://www.gstatic.com/generate_204 și va verifica codul de răspuns. Dacă această cerere este redirecționată, Chrome va deschide ținta redirecționării într-o filă nouă, presupunând că este vorba de o pagină de autentificare. Cererile către pagina de detectare a portalului captiv nu sunt înregistrate.

Mai multe informații: http://www.chromium.org/chromium-os/chromiumos-design-docs/network-portal-detection

Comentarii

Snukker

Răspunsurile 204 sunt uneori folosite în AJAX pentru a urmări clicurile și activitatea paginii. În acest caz, singurele informații care sunt transmise serverului în cererea get sunt un cookie și nu informații specifice în parametrii cererii, deci nu pare să fie cazul aici.

Se pare că clients1.google.com este serverul din spatele sugestiilor de căutare Google. Atunci când vizitați http://www.google.com, , cookie-ul este transmis către http://clients1.google.com/generate_204. Poate că acest lucru este pentru a porni un fel de sesiune pe server? Oricare ar fi utilizarea, mă îndoiesc că este o utilizare foarte standard.

Comentarii

  • Apropo, încercați să faceți clic pe „Mă simt norocos” atunci când caseta de căutare este goală. Dacă faceți acest lucru în ziua de Anul Nou, s-ar putea să aveți o surpriză…  > Por Snukker.
divinci

având în vedere misiunea masivă a Google de a opri atât spam-ul, cât și răzuirea bazei lor de date de căutare, cred că acest lucru face parte din efortul de a urmări roboții etc.

un simplu pseudo anti bot ar putea fi aș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
}

Cred, de asemenea, că ultima „temă” din frontpage-ul Google este, de asemenea, un nou instrument pentru a ajuta la activitatea anti spam/bot.

** NOTĂ ** ipv6.google.com include și această măsură.

Doar cele două 2p ale mele nefondate și neprobate.

Comentarii

  • de ce downvote? are un punct de vedere valid. speculații, dar asta e tot ce putem face din moment ce nu putem ști în mod fiabil la ce folosește Google 204-urile lor. –  > Por bjornl.
motobói

Aceste documente explică:

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

(Căutați pentru generator204)

Secțiunea relevantă:

Dintre diferitele obiecte, o funcție javascript declanșează o funcție generate204 trimisă către serverul video care ar trebui să servească videoclipul. Acest lucru inițiază prefetch-ul video, care are două obiective principale: în primul rând, forțează clientul să efectueze rezoluția DNS a numelui serverului video. În al doilea rând, forțează clientul să deschidă o conexiune TCP către serverul video. Ambele contribuie la accelerarea fazei de descărcare video.

În plus, funcția generate204 are exact același format și aceleași opțiuni ca și cererea reală de descărcare video, astfel încât serverul video este în cele din urmă avertizat că este posibil ca un client să descarce acel videoclip foarte curând. Rețineți că serverul video răspunde cu un 204 No Content răspuns, așa cum implică comanda, și niciun conținut video nu este descărcat până în prezent.

gnasher729

Multe aplicații accesează acest URL pentru a determina dacă au o conexiune care duce doar la un portal captiv.

Ideea este că orice portal captiv crede că acesta este un site web „normal” și apoi vă redirecționează către site-ul său portal, care este returnat cu un status 200. Dacă o aplicație încearcă să acceseze orice site web normal, se confruntă cu un răspuns total neașteptat și ar putea avea probleme în a-și da seama ce este în neregulă. Cu toate acestea, cu acest URL este ușor: dacă primiți statusul 200, vă aflați în interiorul unui portal captiv și puteți spune utilizatorului dumneavoastră să facă ceva în acest sens (de obicei, fie să se conecteze la portal folosind un browser, fie să dezactiveze WiFi și să se bazeze pe 3G, dacă utilizează un telefon). Dacă obțineți starea 204, ați fost conectat la Google, deci aplicația dvs. este de fapt conectată la internet.

Microsoft și Apple folosesc o abordare ușor diferită; ambele au unele URL-uri care returnează un mesaj text scurt foarte specific cu statusul 200, astfel încât, în loc să accesați url-ul Google, puteți, de exemplu, să mergeți la „captive.apple.com” și să verificați statusul 200 cu date = „Success” și nimic altceva. Dacă primiți statusul 200 și nu exact acele date, atunci vă aflați din nou într-un portal captiv.

digitalsanctum

Am găsit această postare pe blog care explică faptul că este folosită pentru a înregistra clicurile. În lipsa unui cuvânt oficial din partea Google, ar putea fi folosit în multe feluri.

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

Comentarii

  • URL-ul google.com/csi returnează 204 și pare să fie folosit pentru urmărire. Dar nu cred că are vreo legătură cu generate_204 (URL-ul despre care se întreabă întrebarea) –  > Por Matthew Flaschen.
Kranthi

Este posibil ca generate 204 să încarce dinamic sugestiile de criterii de căutare. După cum pot vedea din scriptul meu de testare a încărcării, se pare că acest lucru este responsabil pentru fiecare apel la server de fiecare dată când utilizatorul tastează în caseta de text

Steven

Ei bine, m-am uitat la acest lucru de câteva ori și a reieșit că Google înregistrează referer-urile de unde provin de la prima vizită la google.com, de exemplu; urmărind cu Google Chrome am o presupunere de 90% că este pentru Înregistrarea referințelor, Poate Statisticile privind agenții de utilizator bine cunoscut atunci când Google își publică lista de standarde de utilizare a browserului:

Capetele de răspuns

  • Lungime conținut: 0
  • Content-Type: text/html
  • Date: Fri, 21 May 2010 17:06:24 GMT
  • Server: GFE/2.0

Aici „Referer” sub „^Capitole de cerere” arată statisticile Googles că mulți oameni vin de la Microsoft.com, , de asemenea, analizând cuvântul „Windows 7” pentru să mă ajute să mă concentrez pe Windows 7 în căutările următoare. această sesiune

//Steven