• Super User

    Si davesquall ne esistono diversi come ti ha anticipato lucabartoli.

    Molto dipende dalle tue esigenze però... ad esempio vuoi verificare la posizione di una keyword all'interno di una SERP per una determinata lingua?

    Alcuni tool online spesso svolgono l'analisi su SERP americane (salvo qualche webapp nuova che magari ha il supporto multilingua), mentre molte applicazioni clientside ti permettodno di definire motore di ricerca e lingua.

    Io personalmente mi trovo bene con RankTracker, che mi permette di analizzare serp multilingua, con il grosso vantaggio che è multipiattaforma dato che è stato sviluppato in Java.

    Il programma però prevede un abbonamento annuale che tiene conto anche delle modifiche delle serp per l'estrazione dei dati, quindi ti certificano che il programma funzionerà sempre.

    Ci sono ovviamente altre soluzioni, anche totalmente freeware, ma sono soprattutto per windows.

    Sui nomi però mi trovo in difficoltà dato che oramai sono un convinto osxista 🙂


  • ModSenior

    Ciao davesquall e benvenuto nel Forum GT.

    Puoi anche usare per le prime 64 posizioni di Google le AJAX API in uno dei linguaggi supportati e gestire in autonomia il tutto.

    Certo.. i tools indicati sono ottimi e già pronti.
    Per programmare una soluzione ad hoc occorrono discrete conoscenze di software engineering, programmazione a thread paralleli, ottimizzazione e gestione database.

    Se sei un programmatore provetto in meno di 2 giornate realizzi un prototipo interamente funzionante.


  • ModSenior

    Oltre a quanto ti hanno già scritto, considera anche se per le tue esigenze occorre fare l'analisi georeferenziata perché per alcune categorie di keywords Google personalizza la serp in base alla posizione stimata del pc.

    Infine, se ti dovesse servire come documento da consegnare al cliente, ricorda che Google personalizza i risultati anche in base alla cronologia e alle preferenze dell'utente se questo è loggato con un account Google, quindi i risultati che il cliente può ottenere potrebbe essere diversi dai tuoi.

    Valerio Notarfrancesco


  • Super User

    @mister.jinx said:

    Se sei un programmatore provetto in meno di 2 giornate realizzi un prototipo interamente funzionante.

    l'unico rischio qui però è che se inizia a fare query a raffica, c'è il rischio che google inizi a mettere di mezzo il captcha ed lì diventa un bel divertimento saltarlo :arrabbiato:


  • User Newbie

    No, niente di tutto questo,avevo esigenze molto più base 🙂
    Grazie dei link consigliati, ho trovato spunti utili e me li sto studiando!


  • ModSenior

    Ok davesquall, buona continuazione nel forum.

    @gh3 : tranquillo ci sono istruzioni giuste di programmazione per evitare questa condizione.


  • Super User

    Mi interessa questa cosa, potresti dire come? (Evitare Google captcha.)


  • User Attivo

    Con yahoo è sufficiente usare I token nelle query per evitare di essere bloccati... Probabilmente google fa lo stesso, ma invia il token in post... In entrambi I casi, è sufficiente inviare una richiesta via web e analizzare I dati inviati monitorando gli headers http. Quando poi si esegue una query da script basterà replicare il comportamento di google per non avere alcun problema.
    [URL=http://www.giorgiotave.it/forum/gt-world/101972-forum-gt-disponibile-alle-versioni-per-telefoni-cellulari.html]Postato via Mobile


  • Super User

    @lucabartoli said:

    In entrambi I casi, è sufficiente inviare una richiesta via web e analizzare I dati inviati monitorando gli headers http.

    Se è questa la soluzione ... non credo proprio che funzioni con quasi tutti i captcha, che alla base hanno lo stesso funzionamento.

    Le variabili di sessione non le vedi negli http headers, puoi trovare solo l'ID di sessione, ed è sul server l'associazione fra la scritta nell'ultima immagine che ti ha mostrato e la tua sessione.

    Se sei passato scrivendo "pippo", non è che la volta dopo se ti presenta l'immagine "pluto" tu ci puoi scrivere "pippo" e dargli il vecchio ID di sessione, la vecchia associazione la cancella subito appena viene usata o generata una nuova immagine.

    E' come una one time password.

    Togliere i token, o meglio eliminare i cookie, rallenta solo il presentarsi del problema, fa pensare a Google che dietro quell'IP ci possono essere più persone, ma in ogni caso non permette query a raffica che diceva g3h.

    Cosi come gli altri metodi usati dai SEO software: rallentare le query, usare una lista di proxy, mandare in outsourcing la decodifica a esseri umani per esempio ac-service.info.

    Per loro non è sufficiente fare una cosa semplice come dite.

    @mister.jinx

    Non ho fatto alcun full quote, ti ho quotato solo la riga interessata.


  • User Attivo

    Non ho parlato di id di sessione... ho detto tokens e ho detto che di yahoo sono certo, di google no. I captcha non li ho neanche nominati.

    Per la cronaca, mi sono creato uno script che mi esegue le query su yahoo, decodificando il token e replicandolo via script. Per sicurezza avevo inserito un delay per non essere bloccato, poi togliendolo mi sono accorto che non dà nessun problema.
    Lo script in questione esegue circa 200 query di fila, più volte al giorno, senza alcun delay e funziona perfettamente.

    Tu hai parlato di togliere i tokens (che sono l'unica cosa che ti permette di eseguire le query senza blocchi), eliminare i cookies... addirittura di one time password, che non c'entra nulla. E i tokens non sono identificativi di sessione e vengono inviati tramite post o get, che trovi negli headers http.

    Io leggo i post due volte prima di rispondere, 3 o 4 prima di criticare: ti sarei grato se lo facessi anche tu. Senza offesa, eh! 😉


  • Super User

    Se proprio vuoi mettere i puntini sulle i, non metterli sulle o.

    Il token è un dispositivo hardware o software che genera delle one time password a scopo di identificazione.

    Cerca su Google e troverai che tutti, da Wikipedia in poi, ti danno questa definizione.

    Io l'ho usato impropriamente perché per farmi capire cerco di avvicinarmi al linguaggio dell'interlocutore anche quando erroneo.

    Si è vero, ho interpretato male il tuo messaggio, mi sembrava logico interpretarlo così perché le SERP di Google vengono richieste sempre con metodo GET, tranne solo ed esclusivamente quando si presenta il Captcha che richiede metodo POST.

    Quindi se mi parli di POST penso che tu ti riferisca al Captcha.

    Ora che l'ho capito nel verso giusto, è buona l'osservazione, e può velocizzare un po'/abbastanza i software SEO pure per Google, se già non lo fanno, quello che uso io non lo fa.

    Dico abbastanza e non tanto perché vedo che quando io da un normale browser sfoglio velocemente le pagine di google poi mi presenta il captcha.

    Pensavo fosse diventata inutile questa discussione, e invece oltre alla tua dritta ora mi stanno venendo varie idee ;).
    Grazie.


  • User Attivo

    Intanto volevo scusarmi con te... Ieri sera ho risposto male ed ero arrabbiato per i fatti miei, ma tu non c'entravi nulla.

    Comunque, il captcha di google viene mostrato solamente quando rileva troppe query correlate, senza un identificativo. La cosa pazzesca di google è che addirittura non blocca qualsiasi query, chiedendo il captcha, ma solo quelle correlate all'argomento per il quale hai generato troppe richieste.
    Prova ad esempio a farti bloccare cercando "automobili usate", "automobili usate torino", "automobili usate roma", ecc e vedrai che google bloccherà tutto ciò che riguarda le auto usate, se non addirittura le auto in genere, ma non le query che non c'entrano nulla.

    Il problema con google è che non sono riuscito a capire come identifica le query manuali.
    Mentre yahoo semplicemente imposta un token che passa via post, google imposta un quantitativo incredibile di variabili, oltre al cookie di sessione.

    Intanto, smanettando un po' ho trovato una cosa interessante:
    Google inserisce la query e alcune informazioni in una textarea con id "hcache" nascosta ed ogni volta che si fa una query successiva ricarica la textarea aggiungendo le informazioni dell'ultima query, più tutte le precedenti.

    Così: (ho volutamente utilizzato sempre "prova" come termine di ricerca)
    Prima query

    {"/search?hl=it&source=hp&q=prova&aq=f&aqi=g10&aql=&oq=&gs_rfai=&fp=200a00ab8212d159":{"0":{"persisted":true,"kEI":"FeV8TMm9C8iQ4gauz9jWBg","tbpr":{}}}}
    

    Seconda query

    {"/search?hl=it&source=hp&q=prova&aq=f&aqi=g10&aql=&oq=&gs_rfai=&fp=200a00ab8212d159":{"0":{"persisted":true,"kEI":"FeV8TMm9C8iQ4gauz9jWBg","tbpr":{}}},"/search?hl=it&q=prova&aq=f&aqi=&aql=&oq=prova&gs_rfai=&fp=200a00ab8212d159":{"0":{"persisted":true,"kEI":"MeV8TIT5AoPc4gaXj8SlBg","tbpr":{}}}}
    

    Terza query

    {"/search?hl=it&source=hp&q=prova&aq=f&aqi=g10&aql=&oq=&gs_rfai=&fp=200a00ab8212d159":{"0":{"persisted":true,"kEI":"FeV8TMm9C8iQ4gauz9jWBg","tbpr":{}}},"/search?hl=it&q=prova&aq=f&aqi=&aql=&oq=prova&gs_rfai=&fp=200a00ab8212d159":{"0":{"persisted":true,"kEI":"MeV8TIT5AoPc4gaXj8SlBg","tbpr":{}}},"/search?hl=it&q=prova&aq=&aqi=&aql=&oq=&gs_rfai=&fp=200a00ab8212d159":{"0":{"persisted":true,"kEI":"QuV8TMDzDcyl4QbR6uijBg","tbpr":{}}}}
    

    Intanto, kEI sembrerebbe un token... e solo alcune parti sembrerebbero variabili. Resta da scoprire come lo genera e poi provare.

    Preciso che sicuramente google, al contrario di yahoo, ha un controllo antiflood, però scoprire come funziona la web search significa poter ridurre al minimo l'intervallo tra una query e l'altra, che è il maggior punto debole dei softwares seo esistenti.


  • User Attivo

    E questo è chiaramento lo script che genera quella roba:
    (l'ho trovato in un iframe prima della textarea del post precedente)

    var je=parent.google.j;
    var _loc='#'+location.href.substr(location.href.indexOf('?')+1);
    var _ss=je.ss;
    
    je.bv&&je.bv!=3&&je.bvch&&je.bvch(location.href);
    
    function cl(u,ps){
        if (ps==_loc){
            top.location=u;return false;
        }
        return true;
    }
    
    window.google={
        kEI:"QuV8TMDzDcyl4QbR6uijBg",
        kEXPI:"17259,18168,25651,25884,25900,26325",
        kCSI:{
            e:"17259,18168,25651,25884,25900,26325",
            ei:"QuV8TMDzDcyl4QbR6uijBg",
            expi:"17259,18168,25651,25884,25900,26325"
            },
        ml:function(){},
        kHL:"it",
        time:function(){return(new Date).getTime()},
        log:function(b,d,c){
            var    a=new Image,
                e=google,
                g=e.lc,
                f=e.li;
            a.onerror=(a.onload=(a.onabort=function(){delete g}));
            g=a;
            c=c||"/gen_204?atyp=i&ct="+b+"&cad="+d+"&zx="+google.time();
            a.src=c;
            e.li=f+1
            },
        lc:[],
        li:0,
        Toolbelt:{}
        };
    2window.google.loc=_loc;
    ```In query successive sono cambiati kEI e chiaramente ei (che ne è la copia), ma non sono cambiati i numeri in kEXPI e quelli nelle variabili e ed expi di kCSI.

  • Super User

    Si, scusami anche tu, il fatto è che mi avrete fatto tornare in mente un mio ex datore di lavoro, tutto era facile e veloce da realizzare.

    La prima impressione può essere quella, ma analizzando bene è abbastanza complessa la cosa, almeno per Google, come sta emergendo da questa dicussione.

    Quella variabile KEI è la stessa che c'è nella URL di tutti i link della paginazione nel parametro ei.

    Esempio nella pagina google.it/search?q=pippo

    Nel codice javascript trovo appunto:

    
    window.google={kEI:"ZVR9TJjxMoLn4Aa53L2LAw",
    
    

    KEI ha lo stesso valore che trovo nei link della paginazione:

    pagina 2

    
    <a href="/search?q=pippo&amp;hl=it&amp;prmd=vi&amp;ei=ZVR9TJjxMoLn4Aa53L2LAw&amp;start=10&amp;sa=N" class=fl><span class="csb ch" style="background-position:-74px 0;width:20px"></span>2</a>
    
    

    pagina 3

    
    <a href="/search?q=pippo&amp;hl=it&amp;prmd=vi&amp;ei=ZVR9TJjxMoLn4Aa53L2LAw&amp;start=20&amp;sa=N" class=fl><span class="csb ch" style="background-position:-74px 0;width:20px"></span>3</a>
    
    

    Deve essere appunto una one time password, o token, che non è possibile prevedere in anticipo, ma non ci dovrebbe interessare prevederla.

    Quando richiedo la pagina 1, vado a vedere nel codice quanto vale (non io il software ovviamente), e la uso per la richiesta della pagina 2.

    O più semplicemente mi copio il link dalla paginazione sostituendo & con &.

    Stessa dicasi quando mi scarico la pagina 2: mi copio il link della pagina 3.

    E così via.

    Poi bisognerebbe impostare correttamente gli HTTP_REFERER, il nome del browser, Accept-Encoding, e tutte le altre informazioni generalmente inviate da un browser negli HTTP headers.

    Facendo così si dovrebbe simulare abbastanza un browser con javascript e cookies disabilitati.

    Anche la cosa del blocco settoriale è interessante.

    Per questo può aiutare ordinare le query non alfabeticamente come fanno generalmente i software SEO, ma con una funzione random.

    Per i cookies si potrebbe usare CURL che permette di stabilire in quale file di testo memorizzarli e leggerli, e poi ci pensa lui a gestirli.

    Per javascript la cosa si complica.

    Si perché quando una nuova SERP si carica, se javascript è abilitato, ho visto che ci sono nuove richieste, daltronde se non fosse così non avrebbe senso quel codice che hai postato.

    E in particolare una abbastanza enigmatica, ma pure questa si può decifrare con un po' di pazienza.

    Mi sa che ha a che fare proprio con quella textarea.

    
    GET 204 text/html http:// www . google.it/csi?v=3&s=web&action=&e=17259,17291,23756,24878,24923,25532,25651,25901,26325&ei=PFh9TLOgK5XG4gaXp93XBg&expi=17259,17291,23756,24878,24923,25532,25651,25901,26325&imc=1&imn=1&imp=1&rt=prt.34,xjsls.52,ol.104,iml.96,xjses.141,xjsee.154,xjs.171
    

  • User Attivo

    La textarea sembra raccogliere la cronologia di ricerca... Ho provato a cancellarla ogni volta e non ha dato nessun problema.
    A quanto vedo da quel get 204, i numeri all'interno sono proprio le variabili istanziate nel javascript.

    Mi rimane però oscuro quali di quei parametri siano davvero importanti al fine di eseguire una query senza blocchi. Sarebbe utile riuscire a capirlo per limitare al minimo lo sbattimento nello scrivere il codice. Di sicuro rispetto a yahoo si tratta di un altro pianeta...

    Per ottenere un buon numero di risultati con una query sola comunque può essere utile impostare il numero di risultati per pagina a 100 inserendo nell'url "&num=100".