Su un computer che ormai sto usando poco, tra i segnalibri ho ritrovato browsershots.org.
Che dire, è un servizio proprio utile però le sue code sono troppo lunghe.
Così ho un po’ cercato, almeno nella fase iniziale di replicare un servizio del genere, ma poi mi sono stufato.
In pratica avevo fatto tre macchine virtuali: Debian Lenny per usarlo come server coordinatore, Xubuntu per avere i browser su linux e Windows XP per avere le macchine windows.
Poi avevo cercato anche di installare freebsd ma mi dava errore all’installazione.
In teoria per il servizio ci sarebbe bisogno anche di Mac ma tutti conosciamo le politiche Apple, perciò mancava ancora quello.
Comunque ecco le idee che mi sono venute.
Per prima cosa, fare il set up di un server proxy in modo da alleggerire il carico, infatti ho fatto prima una guida.
Magari sarebbe bello poterlo configurare affinché ignori l’esistenza delle pagine dinamiche e anche tutti gli header della durata della cache e tenga tutte le pagine per almeno un tempo doppio al vero tempo necessario stimato.
Sempre per risparmiare banda consiglio di bloccare gli annunci pubblicitari con il file hosts: se usate il proxy basta che sia nel server. Usando sempre il proxy potete anche fare scansioni antivirus con clamav o con altri antivirus (usando il sock, vedendo brevemente su internet) anche non free come avast (penso solo server edition, una licena €13~).
Per la sicurezza possiamo anche bloccare tutto il traffico tranne che le porte 80 e 443 (HTTP e HTTPS).
Per salvare le immagini si potrebbe creare una cartella sul server: ci si potrebbe accedere in vario modo, a seconda delle preferenze: ftp, nfs, smb. Quest’ultima è consigliata per windows: se ben ricordo si può montare una condivisione smb come hard disk, tipo Z:.
Le liste degli screenshots da prendere potrebbero essere formate così: nome_immagine.png|comando_da_dare comprensivo_di_indirizzo e uno per ogni riga.
Per il nome immagine va benissimo un md5 che è salvato anche su un database sql sul server principale che potrebbe avere una tabella con le colonne md5, sito, os, browser, versione, timestamp_di_richiesta e l’md5 potrebbe essere “una somma” di questi dettagli” con anche un numero casuale.
Per la pagina di richiesta si può fare o in PHP o in Python (magari usando fsock o cURL se in qualche modo si usa HTTP), mentre per i test un banale (ma anche no) script della shell.
Due commenti anche su come fare il set up dei client: Linux può essere molto ridotto, quindi potete partire da una debian netinstall e installare da soli l’interfaccia grafica, così risparmiate anche spazio (invece io avevo provato con una xubuntu). Windows invece vi conviene usare XP e ridurlo al minimo indispensabile (anche come driver) con nLite o cercare una mod (non chiedetele qui perché sono considerate illegali per l’EULA di windows) abbastanza leggera.
State attenti solo al fatto che non sia troppo alleggerita e quindi che vi manchino utility per la LAN.
L’unico problema ora è come fare effettivamente gli screenshots: ho pensato che su linux le richieste possono essere accettate col classico HTTP: fare un mini-server con python non dovrebbe essere un problema. Per fare lo screenshot si può usare con os: si esegue imagemacick come ho detto ieri. Per immortalare giusto il browser avevo letto tempo fa di utility come xautomation e un’altra di cui non mi ricordo il nome. Magari invece per Windows potete usare AutoIt per comandare il browser e avevo trovato una DLL per fare con lui gli screenshot. Però non so come accogliere le richieste, se sempre con python e però facciamo eseguire lo script autoit.
Poi il problema è il tempo che ci mette effettivamente per fare le richieste. Stiamo parlando di 33 browser per Linux, 42 per Windows e 7 per FreeBSD che diventa il problema minore.
Bisognerebbe moltiplicare le macchine virtuali = moltiplicare le risorse richieste.
E comunque si parla di almeno un secondo per browser secondo me, anche con la cache di squid, anzi, sopprattuto con la cache di squid, che magari sarà fatta caricare in anticipo con cURL per esempio.
Detto questo, se qualcuno ha intenzione di aprire un servizio così, buona fortuna e me lo faccia sapere, perché sono curioso.