[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