[Python] Automatizzare inserimento dati su pagina web

Marco De Paoli depaolim a gmail.com
Mar 25 Nov 2014 05:24:42 CET


Il 24 novembre 2014 21:00, Gollum1 <gollum1.smeagol1 a gmail.com> ha scritto:
> Comunque ho cominciato ad usare la libreria requests, e pare che
> qualcosa stia cominciando ad ottenere...
>
> per ora mi da almeno un risultato 200, quindi vuol dire che il primo
> login lo fa, ho trovato anche il cookies della sessione, ma ho notato
> dall'analisi degli header che c'é una seconda variabile session, che
> però non è restituito come coockie, evidentemente...
>
> ora quando mando il post per la variazione del numero di telefono,
> ottengo, andando ad esaminare il r.text, che praticamente per fare
> questa operazione devo essere loggato... quindi il passaggio della
> sessione non è sufficiente (devo trovare anche il secondo parametro
> session).

le request.session le hai già provate?
http://docs.python-requests.org/en/latest/user/advanced/#session-objects

potrebbero farti comodo per il cookie di sessione

altrimenti potrebbe essere che ti manca il csrf token

di seguito uno snippet con codice, rigorosamente non testato, che
(dovrebbe!) gestire più o meno il cookie di sessione e il csrf tooken
come lo vuole django
("csrfmiddlewaretoken" è il campo hidden come lo gestisce django, nel
tuo caso non saprei se il meccanismo è simile...)

--------> inizio <-----------

r = s.get(url_login)
assert r.status_code == 200
csrftoken = r.cookies.get("csrftoken")
r = s.post(url_login, data={
    "csrfmiddlewaretoken": csrftoken,
    "username" : username,
    "password": password})
assert r.status_code == 200
r = s.post(url_phone, data={
    "phone": "new-phone"})
assert r.status_code == 200

--------> fine <-----------


ovviamente rimangono validi i consigli già dati di di
reverse-ingenerizzare tutto quanto inviato da browser (Tamper Data,
Copy as cURL, etc.)

puoi dare un'occhiata anche qui:
https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor

ciao,
Marco


Maggiori informazioni sulla lista Python