Python: Formspring.me bot!
Grazie al modulo urllib ed urllib2 possiamo costruire un semplice programmino python, capace di autenticarsi al servizio Formspring.me e postare delle domande in modo automatico.

formspring logo
Prendiamo in considerazione cosa dovrà fare il nostro programmino: autenticarsi sul sito, postare una domanda ed eseguire il log-Out. Apriamo con un editor di testo un nuovo file che chiameremo Formspring.py iniziamo a scrivere la base del nostro programma:
import sysimport urllibimport urllib2if not len(sys.argv) >= 4:print "Usage:"print "%s MyUsername MyPassword Victim The question that you whant to ask" % sys.argv[0]sys.exit(1)
Così facendo il nostro programmino python caricherà tutto il necessario e controllerà che sia stato lanciato correttamente il programma. Procediamo con scrivere la prima parte, quella che dovrà autenticare l’utente:
print "Login...",
myurl = urllib2.build_opener( urllib2.HTTPCookieProcessor() )
urllib2.install_opener( myurl )
encode = urllib.urlencode( { 'username': sys.argv[1], 'password': sys.argv[2] } )
f = myurl.open( 'http://www.formspring.me/account/login', encode )
f.read()
f.close()
print "done"
Da come potete osservare, per poter mantenere l’utente autenticato ho dovuto gestire i Cookies con urllib2. Successivamente ho aperto una richiesta alla pagina di login dove ho inviato un dizionario con le credenziali di accesso. Dato che il sistema di formspring richiede delle chiavi per poter prevenire spambot, il nostro programmino sarà più furbo e ricaverà la sua chiave per poter inviare la domanda. Quindi inseriamo nel file il seguente codice:
print "Getting token...", f = myurl.open( 'http://www.formspring.me/%s' % sys.argv[3]) html = f.read() mytoken = html dicto = {"token": str(mytoken), "anonymous": "1", "question": " ".join(sys.argv[4:]), } print "done"
In questo modo avremo pronto tutto il necessario per poter inviare la domanda: la chiave segreta di formspring, l’anonimato e la domanda specifica! Nel caso non vogliate pubblicare la domanda in modo Anonimo, vi basterà impostare anonymous su 0 invece che su 1. Essendo tutto pronto, non ci resta che fare la richiesta diretta ed eseguire il logout dal servizio. Scriviamo:
print "Asking question...", mydata = urllib.urlencode( dicto ) f = myurl.open( 'http://www.formspring.me/profile/ask/%s/' % sys.argv[3], mydata) f.read() f.close() print "done" print "Logout...", f = myurl.open( 'http://www.formspring.me/account/logout', mydata) f.read() f.close() print "done"
Et voilà! Salviamo il file ed apriamo un terminale e digitiamo:
python ./Formspring.py USERNAME PASSWORD SFORTUNATO TESTO DELLA DOMANDA
Ovviamente dovrete sostituire USERNAME con il nickname del vostro PASSWORD con la vostra password, SFORTUNATO con il nickname dell’account che dovrà rispondere ed a seguire la vostra domanda che volete chiedere. Per gli utenti più esigenti ho realizzato una versione strutturata in Classi che permette di riutilizzarlo in applicazioni esterne, realizzando una interfaccia grafica e/o uno spambot
Buon divertimento!
Link al codice: http://bit.ly/aPs4Pk