• User

    [Selenium] Delucidazione sulla logica di: "Selenium Remote Driver"

    Buongiorno,
    ho letto la guida ufficiale e ho googlato un po su altri esempi che parlano di "Selenium Remote Drivers" , ma trovo difficoltà a capire il suo funzionamento a livello concettuale non di codice, cioè:

    A che serve?
    Come si utilizza in pratica?

    Faccio un esempio banale per farvi capire come lo vorrei utilizzare, vorrei capire se posso utilizzarlo al seguente scopo:

    Lanciando tramite il chron del server linux uno script fatto in php o altro linguaggio server, devo effettuare il login su un sito, successivamente al login eseguire una serie di automazioni agendo sui componenti html come fa Selenium.

    Quindi, vorrei usare selenium senza fargli aprire il classico browser locale, ma fare tutto a livello codice, senza dovere accendere il PC.

    Non so se mi sono fatto capire.


    andreadragotta 1 Risposta
  • Staff Tecnico

    @stefano-dev ciao e scusami se arrivo con così tanto ritardo 😄

    Quello che vuoi fare tu lo puoi fare con Selenium (in php ma anche in python) ma anche con Puppeter.

    Il tuo script messo in cron sul server fa partire un browser headless sul server stesso che esegue le operazioni e tira fuori il response.

    Attenzione però, quando esegui queste operazioni di fatto sei un bot e se la web app su cui esegui i comandi ha sistemi per riconoscere i bot potresti trovarti un captcha dopo qualche visita.

    In questo caso devi pensare a sfruttare proxy o a fare un po' di rotazione degli ip (o del server)


    S 1 Risposta
  • User

    @andreadragotta
    ho sorpassato il problema che avevo nella mia domanda, ho fatto vari test di automazione con: Php + Geko Driver per Firefox + Lambdatest Server e tutto funziona, si apre un Browser all'interno di Lambdatest dove io faccio le mie automazioni su Facebook.
    Il problema è che costa un occhio della testa.
    Ma non sarebbe possibile riprodurre la navigazione del Browser con php e cUrl, presentandosi come Mozzilla browser? Il problema è ceh Facebook ha mille controlli se uno non gli va bene non ti fa navigare.

    Eppure ho scaricato un software per pubblicare nei gruppi facebook senza utilizzare API e quindi senza FB App, in modalità umana, quindi con un automazione browser, solo che non si vede il Browser, quindi credo che utilizzi un browser remoto virtuale come Lambdatest o una simulazione di Browser fatto con un altro linguaggio e richiamato da API.

    Non so che strada prendere.


  • Staff Tecnico

    Ogni quanto effettui queste operazioni? Quanto tempo ci mette lo script ad eseguire tutto


    S 1 Risposta
  • User

    @andreadragotta
    ho fatto solo test per ora, la frequenza dei test è stata da 1 a 10 minuto l'uno dall'altro, il tempo di risposta dal comando all'esecuzione nel server è di circa 3-5 secondi a seconda della linea.

    Se invece avvii il comando e quindi l'istanza del nuovo Browser su lambdatest e poi esegui vari test all'interno dell'istanza creata è pressochè immediata la risposta all'evento entro un secondo.

    Ma se crei un account Pro e non Free-Test, puoi aprire molteplici istanze di browser contemporaneamete.

    Il mio scopo è distribuire l'applicazione, quindi per ogni utente che lo utilizza si apre una nuova istanza di browser.


    andreadragotta 1 Risposta
  • Staff Tecnico

    @stefano-dev secondo me la cosa migliore, anche per capire come funziona tutto quanto il flusso, è di prenderti una VPS in qualche cloud provider e iniziare a giocare con gli headless browser.

    Io in passato ho utilizzato Selenium + Geko Driver (e in alcuni casi BeatifulSoup) con Python o Puppeter con nodejs ma penso che il principio sia lo stesso anche se utilizzi PHP.

    Il tuo script dovrebbe aprire una nuova istanza del browser in modalità headless e quindi senza una GUI per ogni chiamata che riceve.

    Come riceve le chiamate lo devi valutare tu, potresti valutare di eseguire n browser quante sono le richieste o un singolo browser che svuota una coda di operazioni. Chiaramente in base alla scelta dovrai mettere in conto di sfruttare più o meno risorse.

    Non so se ho risposto un po' alle tuo domande, fammi sapere 😄


    S 1 Risposta
  • User

    @andreadragotta
    Assolutamente si, mi hai dato delle dritte da testare niente male.

    1. Una VPS per installarci Selenium Server e quindi non utilizzare Lambdatest visto la spesa elevata?
    2. Senza GUI per la velocità? Non so se Facebook accetta la navigazione headless.
    3. Non posso gestire le chiamate come hai detto sopra, ogni utente che utilizza il mio servizio tiene attivo la sessione browser anche per ore, tieni conto che se nella giornata di oggi deve pubblicare su 100 gruppi, non può effettuare 100 login a distanza di 10 minuti e postare in un gruppo, lo bannerebbero dopo poco, ma deve fare un solo login, tenere la sessione aperta e postare ogni 10 minuti, quindi eseguire l'automazione di post.

    andreadragotta 1 Risposta
  • Staff Tecnico

    @stefano-dev rispondo alle varie domande

    1. Usare una o più VPS ti permette di essere più flessibile e chiaramente abbassare i costi, lambdatest non lo conosco ma penso che ti dia già parte del lavoro fatto quindi chiaramente ha costi più alti.
    2. Senza GUI perchè in questo modo utilizzi meno risorse e puoi prendre una o più VPS più piccole. Facebook supporta la navigazione headless senza problemi
    3. Allora devi strutturare bene l'infrastruttura che vuoi usare, per ridurre il più possibile il rischio di ban (anche se comunque in rischio non scompare) potresti valutare la creazione di più VPS piccole magari anche su datacenter e region differenti in modo tale da avere indirizzi IP diversi e mettere una coda che esegue le varie richieste assegnando una VPS a uno o più account.

    In ogni caso non escludo che il rischio di ban ci sia, se non a livello di account a livello di IP, metti in conto quindi di ciclare le macchine per avere sempre IP "freschi" (potresti utilizzare Terraform o sistemi simili per fare questa cosa)


    S 1 Risposta
  • User

    @andreadragotta ha detto in [Selenium] Delucidazione sulla logica di: "Selenium Remote Driver":

    potresti valutare la creazione di più VPS

    Azzz..., non avevo pensato a questa cosa, vero!

    Grazie molte per queste accorgimenti 👍