Re: [Python] Automatizzare inserimento dati su pagina web
Il 01/12/2014 06:50, Gollum1 ha scritto: Il 29 novembre 2014 17:49:34 CET, girolamo girolamo.nelle...@gmail.com ha scritto: scusa se rispondo tardi, ma c'e' qualche ragione particolare per cui non stai usando la libreria mechanize? http://wwwsearch.sourceforge.net/mechanize/ Purtroppo a quanto pare mechanize non è compatibile con python3, quindi dovrò continuare le mie sperimentazioni con requests. questa mi pare una buona ragione! buona sperimentazioni ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il giorno 29 novembre 2014 20:46, Gollum1 gollum1.smeag...@gmail.com ha scritto: Il 29 novembre 2014 17:49:34 CET, girolamo girolamo.nelle...@gmail.com ha scritto: scusa se rispondo tardi, ma c'e' qualche ragione particolare per cui non stai usando la libreria mechanize? http://wwwsearch.sourceforge.net/mechanize/ boh, io ero partito con mechanize e mi trovavo bene ma requests la trovo ancora più compatta ed efficace Perché non la conoscevo... Appena posso gli do un occhio... Grazie se vuoi dopo dacci un feedback su quale ti sembra meglio... Marco ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 30 novembre 2014 15:09, Marco De Paoli depao...@gmail.com ha scritto: Il giorno 29 novembre 2014 20:46, Gollum1 gollum1.smeag...@gmail.com ha scritto: Il 29 novembre 2014 17:49:34 CET, girolamo girolamo.nelle...@gmail.com ha scritto: scusa se rispondo tardi, ma c'e' qualche ragione particolare per cui non stai usando la libreria mechanize? http://wwwsearch.sourceforge.net/mechanize/ boh, io ero partito con mechanize e mi trovavo bene ma requests la trovo ancora più compatta ed efficace Perché non la conoscevo... Appena posso gli do un occhio... Grazie se vuoi dopo dacci un feedback su quale ti sembra meglio... Non mancherò... ora sto cominciando ad analizzare i log della connessione umana, Non capisco però una cosa... già dalla prima connessione, trovo che viene mandato un cookies, ma non è stato precedentemente settato da nessuna parte, non c'erano stati ancora scambi con il server (la cache del browser è disabilitata). PLSTreeSaveStateCookie=1%2C2%2C3%2Croot vi mando lo scambio completo della prima sessione... da cui poi ricevo il cookies di sessione correttamente... === https://10.24.144.13/ucmuser/main GET /ucmuser/main HTTP/1.1 Host: 10.24.144.13 User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:33.0) Gecko/20100101 Firefox/33.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Cookie: PLSTreeSaveStateCookie=1%2C2%2C3%2Croot Connection: keep-alive HTTP/1.1 200 OK Cache-Control: private Expires: Thu, 01 Jan 1970 01:00:00 CET Set-Cookie: JSESSIONID=4C914C461DC3828861C1A45DB7026863; Path=/ucmuser/; Secure; HttpOnly Content-Type: text/html;charset=utf-8 Content-Length: 2546 Date: Fri, 28 Nov 2014 05:22:39 GMT === da questo posso rilevare che si usa il metodo get e non post per questa prima fase... per ora sto facendo qualche piccola prova con requests, ed effettivamente se gli faccio scaricare quello che ricevo, vedo il sorgente della pagina corretta, corrisponde a quella del browser... quindi questo primo passo funziona... il prossimo passo è quello di ingannare la pagina di login, facendogli credere che sia stata fatta la verifica che dovrebbe fare il file js che scarica in uno dei passaggi intermedi (forse per questo sarebbe meglio mechanize, in quanto dovrebbe pensare lui a fare la parte del browser e gestirsi il tutto)... Byez -- Gollum1 - http://www.gollumone.it Tesoro, dov'é il mio teoro... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 30 novembre 2014 17:35, Gollum1 gollum1.smeag...@gmail.com ha scritto: [...] devo dire che la cosa si sta risolvendo un po' più velocemente di quanto avessi pensato... praticamente ho fatto la request alla pagina iniziale con get la pagina iniziale, che mi ha fornito un primo sessionid, poi con questo session id chiamare la pagina di login con un post e i parametri di login, a questo punto ho un secondo sessionid (sessionidsso) che unito al primo ora uso nelle chiamate delle pagine successive... ora ho chiamato la pagina dell'utente, e devo estrarre il suo identificativo che è ritornato attraverso xml, nello stesso modo devo estrarre da un altro file xml il device associato a quell'utente, e il numero che deve essere gestito e rediretto... ora mi sono fermato però sul requests.put() che ritorna un codice 405 invece che il classico 400... forse ho saltato qualche passaggio... :P Byez ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 30 novembre 2014 15:09, Marco De Paoli depao...@gmail.com ha scritto: Il giorno 29 novembre 2014 20:46, Gollum1 gollum1.smeag...@gmail.com ha scritto: Il 29 novembre 2014 17:49:34 CET, girolamo girolamo.nelle...@gmail.com ha scritto: scusa se rispondo tardi, ma c'e' qualche ragione particolare per cui non stai usando la libreria mechanize? http://wwwsearch.sourceforge.net/mechanize/ boh, io ero partito con mechanize e mi trovavo bene ma requests la trovo ancora più compatta ed efficace Perché non la conoscevo... Appena posso gli do un occhio... Grazie se vuoi dopo dacci un feedback su quale ti sembra meglio... Purtroppo a quanto pare mechanize non è compatibile con python3, quindi dovrò continuare le mie sperimentazioni con requests. Byez -- Gollum1 - http://www.gollumone.it Tesoro, dov'é il mio teoro... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 25 novembre 2014 05:24, Marco De Paoli depao...@gmail.com ha scritto: ovviamente rimangono validi i consigli già dati di di reverse-ingenerizzare tutto quanto inviato da browser (Tamper Data, Copy as cURL, etc.) Ok, ho finalmente avuto qualche minuto (veramente pochi) di tempo, e ho registrato, con un plugin per la registrazione dello scambio degli headers di firefox, una intera sessione di login, modifica del numero e logout... ora mi sono salvato il tutto e me lo sono spedito a casa, nelle prossime sere mi metterò ad analizzarli... ma già ad un primo sguardo ho visto che ci sono una marea di richieste per i .css, posso presumere che non sia necessario che effettui le stesse richieste, visto che non sto realizzando un browser. Mentre ho natato che ci sono anche richieste di caricamento di un paio di script javascript, ora... devo capire se servono per la composizione della pagina (ad almeno uno comunque ritorna un errore 404 not found) o per la gestione dei dati che vado a passare... quindi... presumo per prima cosa di dover ripulire i log (sono due, uno per l'attivazione del trasferimento, e uno per la sua disattivazione) dai css, e poi analizzare per bene quello che resta... grazie del vostro supporto... :D Byez -- Gollum1 - http://www.gollumone.it Tesoro, dov'é il mio teoro... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 29/11/2014 10:50, Gollum1 ha scritto: Il 25 novembre 2014 05:24, Marco De Paoli depao...@gmail.com ha scritto: ovviamente rimangono validi i consigli già dati di di reverse-ingenerizzare tutto quanto inviato da browser (Tamper Data, Copy as cURL, etc.) Ok, ho finalmente avuto qualche minuto (veramente pochi) di tempo, e ho registrato, con un plugin per la registrazione dello scambio degli headers di firefox, una intera sessione di login, modifica del numero e logout... scusa se rispondo tardi, ma c'e' qualche ragione particolare per cui non stai usando la libreria mechanize? http://wwwsearch.sourceforge.net/mechanize/ nel tuo caso dovrebbe essere sufficiente un'approccio del genere: import re import mechanize from mechanize import ParseResponse, urlopen, urljoin # baseurl uri = http://www.esempio.it/; # chiami la pagina di login request = mechanize.Request(mechanize.urljoin(uri, login)) response = mechanize.urlopen(request) # selezioni il form forms = ParseResponse(response, backwards_compat=False) form = forms[0] # compili il form con le credenziali form['username'] = 'antani' form['password'] = 'antani' # submit urlopen(form.click()) # chiami la pagina contente il form che ti interessa request = mechanize.Request(mechanize.urljoin(uri, form-contatti)) response = mechanize.urlopen(request) # selezioni il form forms = ParseResponse(response, backwards_compat=False) form = forms[0] # compili il form form['first_name'] = 'Mario' form['last_name'] = 'Rossi' form['phone'] = '0123456789' # submit urlopen(form.click()) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 29 novembre 2014 17:49:34 CET, girolamo girolamo.nelle...@gmail.com ha scritto: scusa se rispondo tardi, ma c'e' qualche ragione particolare per cui non stai usando la libreria mechanize? http://wwwsearch.sourceforge.net/mechanize/ Perché non la conoscevo... Appena posso gli do un occhio... Grazie byez -- Tesssoro... dov'è il mio tesssoro. http:\\www.gollumone.it Inviato dal mio cellulare Android con K-9 Mail, scusate gli errori di battitura. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
2014-11-20 16:29 GMT+00:00 Gollum1 gollum1.smeag...@gmail.com: ecco... questo era un altro dubbio che mi era venuto, andando con il browser mi avverte sempre del certificato scaduto o non riconosciuto (non ricordo cosa dice di preciso), e volevo chiedervi appunto come trattarlo... la tua risposta è arrivata di proposito... grazie... Anche tirare un paio di pedate a chi mantiene il sito per mettere a posto il certificato potrebbe non essere un'idea cattiva... -- . ..: -enrico- ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 24 novembre 2014 20:36, enrico franchi enrico.fran...@gmail.com ha scritto: 2014-11-20 16:29 GMT+00:00 Gollum1 gollum1.smeag...@gmail.com: ecco... questo era un altro dubbio che mi era venuto, andando con il browser mi avverte sempre del certificato scaduto o non riconosciuto (non ricordo cosa dice di preciso), e volevo chiedervi appunto come trattarlo... la tua risposta è arrivata di proposito... grazie... Anche tirare un paio di pedate a chi mantiene il sito per mettere a posto il certificato potrebbe non essere un'idea cattiva... Hai ragione, ma ho potuto constatare che all'interno dell'intranet, hanno fatto diverse pagine con questo problema... mettere una firma autenticata non credo che sarebbe stata una cosa tanto difficile... ma io non posso avere a che fare con l'IT... (putroppo) Byez -- Gollum1 - http://www.gollumone.it Tesoro, dov'é il mio teoro... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
2014-11-24 20:45 GMT+01:00 Gollum1 gollum1.smeag...@gmail.com: ma io non posso avere a che fare con l'IT... (putroppo) Il che mi spiace, la scure bipenne te la presterei io ;) Carlos -- EZLN ... Para Todos Todo ... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
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). Domani al mio rientro in sede, vedrò se riesco a tirare fuori qualcosa d'altro di utile. TnxByez -- Gollum1 - http://www.gollumone.it Tesoro, dov'é il mio teoro... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 24 novembre 2014 21:00, Gollum1 gollum1.smeag...@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 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 07 novembre 2014 16:08, Marco Beri marcob...@gmail.com ha scritto: 2014-11-07 16:05 GMT+01:00 Gollum1 gollum1.smeag...@gmail.com: Usa la libreria requests: ci ho fatto cose egregie che chi ha realizzato i siti manco pensava fosse possibile fare in automatico. http://docs.python-requests.org/en/latest/ sto lavorando su una macchina winzoz (purtroppo), perché le pagine che devo andare a controllare le posso raggiungere solo con macchine messe in dominio. Purtroppo sulla macchina con cui sto lavorando non ho i diritti di amministrazione. Mi sono fatto installare python3.4 e pycharm, quindi lo sviluppo posso farlo... Ho creato un virtualenv in modo che possa mettere i vari moduli che decido di usare, è praticamente come se mi fossi fatto una installazione di python locale di cui posso avere il controllo (entro certi limiti). Ho provato ad installare con pip la libreria che mi hai suggerito, ma mi da un errore... (retifico... mentre scrivevo ho riprovato da console, nel virtualenv naturalmente, a ridigitare pip install requests e questa volta l'ha scaricato... misteri dell'informatica...) ora faccio qualche prova, le pagine chiedono un'autenticazione, e probabilmente fanno la richiesta via ldap... ma dovrebbe essere il server a fare la richiesta, quindi per me dovrebbe essere trasparente... il fattore è che la richiesta viene fatta attraverso un form, basta il modo di autenticazione fatto con request, o devo in qualche modo inserire i campi e fare un send? purtroppo è troppo tempo che non scrivo una riga di codice, e mi sono parecchio arruginito.. Byez -- Gollum1 - http://www.gollumone.it Tesoro, dov'é il mio teoro... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 20 novembre 2014 12:35, Gollum1 gollum1.smeag...@gmail.com ha scritto: Il 07 novembre 2014 16:08, Marco Beri marcob...@gmail.com ha scritto: 2014-11-07 16:05 GMT+01:00 Gollum1 gollum1.smeag...@gmail.com: Usa la libreria requests: ci ho fatto cose egregie che chi ha realizzato i siti manco pensava fosse possibile fare in automatico. http://docs.python-requests.org/en/latest/ sto lavorando su una macchina winzoz (purtroppo), perché le pagine che devo andare a controllare le posso raggiungere solo con macchine messe in dominio. Purtroppo sulla macchina con cui sto lavorando non ho i diritti di amministrazione. Mi sono fatto installare python3.4 e pycharm, quindi lo sviluppo posso farlo... Ho creato un virtualenv in modo che possa mettere i vari moduli che decido di usare, è praticamente come se mi fossi fatto una installazione di python locale di cui posso avere il controllo (entro certi limiti). Ho provato ad installare con pip la libreria che mi hai suggerito, ma mi da un errore... (retifico... mentre scrivevo ho riprovato da console, nel virtualenv naturalmente, a ridigitare pip install requests e questa volta l'ha scaricato... misteri dell'informatica...) ora faccio qualche prova, le pagine chiedono un'autenticazione, e probabilmente fanno la richiesta via ldap... ma dovrebbe essere il server a fare la richiesta, quindi per me dovrebbe essere trasparente... il fattore è che la richiesta viene fatta attraverso un form, basta il modo di autenticazione fatto con request, o devo in qualche modo inserire i campi e fare un send? non so che autenticazione preveda il tuo sito (basic, cookies, oauth o altro) ad ogni modo requests è molto pythonica ed essenziale dai un occhiata ai primi esempi riportati al link che ti ha già segnalato Marco B. http://docs.python-requests.org/en/latest/ e questa poi è la pagina specifica sull'autenticazione http://docs.python-requests.org/en/latest/user/authentication/ ciao, Marco ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
On 2014-11-20 11:35, Gollum1 wrote: il fattore è che la richiesta viene fatta attraverso un form, basta il modo di autenticazione fatto con request, o devo in qualche modo inserire i campi e fare un send? Installa Tamper Data in Firefox e guarda che richieste vengono fatte dal browser: probabilmente e` solo una post con nome utente e password, poi replichi la stessa richiesta con requests o anche solo con urllib2. https://addons.mozilla.org/en-US/firefox/addon/tamper-data/ -- Daniele ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
ok... ho fatto i primi tentativi da console: r = requests.get('https://10.24.144.13/ucmuser/?logoff=t', auth=('mio_login', 'mia_password')) Traceback (most recent call last): File input, line 1, in module File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\api.py, line 60, in get return request('get', url, **kwargs) File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\api.py, line 49, in request return session.request(method=method, url=url, **kwargs) File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\sessions.py, line 457, in request resp = self.send(prep, **send_kwargs) File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\sessions.py, line 569, in send r = adapter.send(request, **kwargs) File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\adapters.py, line 420, in send raise SSLError(e, request=request) requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) ho provato anche con il put... stesso errore... questo l'output di chrome sugli headers che transitano quando faccio l'autenticazione, vedo che dovrebbe essere passato tutto come post, ma forse il mio tentativo è andato a vuoto perchè la richiesta devo passarla in post, ma con le due variabili j_username e J_password... Remote Address: 10.24.144.13:443 Request URL: https://10.24.144.13/ucmuser/j_security_check Request Method: POST Status Code: 302 Found Request Headersview source Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: it,it-IT;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control: max-age=0 Connection: keep-alive Content-Length: 43 Content-Type: application/x-www-form-urlencoded Cookie: JSESSIONID=63413AB58767E5CF0B39D02EFB036813 Host: 10.24.144.13 Origin: https://10.24.144.13 Referer: https://10.24.144.13/ucmuser/main User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36 Form Dataview sourceview URL encoded j_username: mio_login j_password: mia_password Response Headersview source Content-Length: 0 Date: Thu, 20 Nov 2014 13:27:01 GMT Location: https://10.24.144.13/ucmuser/main Server: Il 20 novembre 2014 12:50, Marco De Paoli depao...@gmail.com ha scritto: Il 20 novembre 2014 12:35, Gollum1 gollum1.smeag...@gmail.com ha scritto: Il 07 novembre 2014 16:08, Marco Beri marcob...@gmail.com ha scritto: 2014-11-07 16:05 GMT+01:00 Gollum1 gollum1.smeag...@gmail.com: Usa la libreria requests: ci ho fatto cose egregie che chi ha realizzato i siti manco pensava fosse possibile fare in automatico. http://docs.python-requests.org/en/latest/ sto lavorando su una macchina winzoz (purtroppo), perché le pagine che devo andare a controllare le posso raggiungere solo con macchine messe in dominio. Purtroppo sulla macchina con cui sto lavorando non ho i diritti di amministrazione. Mi sono fatto installare python3.4 e pycharm, quindi lo sviluppo posso farlo... Ho creato un virtualenv in modo che possa mettere i vari moduli che decido di usare, è praticamente come se mi fossi fatto una installazione di python locale di cui posso avere il controllo (entro certi limiti). Ho provato ad installare con pip la libreria che mi hai suggerito, ma mi da un errore... (retifico... mentre scrivevo ho riprovato da console, nel virtualenv naturalmente, a ridigitare pip install requests e questa volta l'ha scaricato... misteri dell'informatica...) ora faccio qualche prova, le pagine chiedono un'autenticazione, e probabilmente fanno la richiesta via ldap... ma dovrebbe essere il server a fare la richiesta, quindi per me dovrebbe essere trasparente... il fattore è che la richiesta viene fatta attraverso un form, basta il modo di autenticazione fatto con request, o devo in qualche modo inserire i campi e fare un send? non so che autenticazione preveda il tuo sito (basic, cookies, oauth o altro) ad ogni modo requests è molto pythonica ed essenziale dai un occhiata ai primi esempi riportati al link che ti ha già segnalato Marco B. http://docs.python-requests.org/en/latest/ e questa poi è la pagina specifica sull'autenticazione http://docs.python-requests.org/en/latest/user/authentication/ ciao, Marco ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python -- Gollum1 - http://www.gollumone.it Tesoro, dov'é il mio teoro... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 20 novembre 2014 16:11, Gollum1 gollum1.smeag...@gmail.com ha scritto: ok... ho fatto i primi tentativi da console: r = requests.get('https://10.24.144.13/ucmuser/?logoff=t', auth=('mio_login', 'mia_password')) Traceback (most recent call last): File input, line 1, in module File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\api.py, line 60, in get return request('get', url, **kwargs) File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\api.py, line 49, in request return session.request(method=method, url=url, **kwargs) File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\sessions.py, line 457, in request resp = self.send(prep, **send_kwargs) File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\sessions.py, line 569, in send r = adapter.send(request, **kwargs) File D:\My Documents\p977727\Documents\03 - Sviluppo\PythonVirtualEnvironment\VE-GestioneTelefono\lib\site-packages\requests\adapters.py, line 420, in send raise SSLError(e, request=request) requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) ho provato anche con il put... stesso errore... questo l'output di chrome sugli headers che transitano quando faccio l'autenticazione, vedo che dovrebbe essere passato tutto come post, ma forse il mio tentativo è andato a vuoto perchè la richiesta devo passarla in post, ma con le due variabili j_username e J_password... Remote Address: 10.24.144.13:443 Request URL: https://10.24.144.13/ucmuser/j_security_check Request Method: POST Status Code: 302 Found Request Headersview source Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: it,it-IT;q=0.8,en-US;q=0.6,en;q=0.4 Cache-Control: max-age=0 Connection: keep-alive Content-Length: 43 Content-Type: application/x-www-form-urlencoded Cookie: JSESSIONID=63413AB58767E5CF0B39D02EFB036813 Host: 10.24.144.13 Origin: https://10.24.144.13 Referer: https://10.24.144.13/ucmuser/main User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36 Form Dataview sourceview URL encoded j_username: mio_login j_password: mia_password Response Headersview source Content-Length: 0 Date: Thu, 20 Nov 2014 13:27:01 GMT Location: https://10.24.144.13/ucmuser/main Server: qualcosa del genere? payload = {'j_username': 'mio_login', 'j_password': 'mia_password'} r = requests.get(https://10.24.144.13/ucmuser/j_security_check;, params=payload) a quel punto dovrebbe tornarti indietro il cookie di sessione e da quel momento dovresti poter andare in get sulle varie pagine... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Se usi crome c'è un opzione tanto carina... Copy as cURL Che già ti prepara tutti gli headers e i dati che devi passare. Volendo puoi anche testarla usando cURL. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Ah un altra cosa, non ti scordare il cookie JSESSIONID se vuoi fare più di una richiesta in fila all'altra. Altrimenti la seconda pagina di richiede di nuovo la login. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Te dico l'ultima... CERTIFICATE_VERIFY_FAILED Mi sembra che il sito che stai puntanto ha un certificato SSL non certificato da una authority riconosciuta. Quindi hai bisogno di verify=False da passare a requests :-) ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 20 novembre 2014 16:34, Simone Federici s.feder...@gmail.com ha scritto: Te dico l'ultima... CERTIFICATE_VERIFY_FAILED Mi sembra che il sito che stai puntanto ha un certificato SSL non certificato da una authority riconosciuta. Quindi hai bisogno di verify=False da passare a requests :-) ecco... questo era un altro dubbio che mi era venuto, andando con il browser mi avverte sempre del certificato scaduto o non riconosciuto (non ricordo cosa dice di preciso), e volevo chiedervi appunto come trattarlo... la tua risposta è arrivata di proposito... grazie... Byez -- Gollum1 - http://www.gollumone.it Tesoro, dov'é il mio teoro... ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Salve a tutti.. visto che se ne parla.. ci sono anche delle soluzioni intermedie? se io, facendo web scraping di una pagina web, avessi bisogno di eseguire delle funzioni javascript presenti in uno script che viene caricato dinamicamente, ho qualche strada che non sia selenium? interfacciarsi al browser risulta veramente poco performante, mentre a me servirebbe parsare il codice html e eseguire una semplice funzione js su alcuni dei dati presenti. al momento l'unica alternativa che ho valutato è quella di tradurre in python le funzioni che mi interessano in modo da ottenere lo stesso risultato, ma ovviamente mi richiede molto piu tempo di sviluppo... in piu un aggiornamento ogni volta che queste funzioni vengono modificate. ciao On Friday, November 7, 2014, Riccardo Lemmi ricca...@reflab.com wrote: Gollum1 wrote: Ecco il mio problema, a parte che lo script dovrebbe girare, purtroppo, su una macchina winzoz, dovrei analizzare un file CVS, in cui ho solamente un campo data, un campo orario e un numero di telefono. E questo è tutto sommato banale, il problema è che nel momento indicato dalla data e dall'ora presa da un record del file, deve inserire il numero di telefono in un particolare campo di una pagina web (in intranet) e dare il submit della modifica. Dite che è fattibile la cosa o devo trovare altre soluzioni? byez Se la form è stabile e non richiede l'analisi del codice html 'request' è la soluzione più semplice. Se devi fare l'analisi della pagina prova: http://www.crummy.com/software/BeautifulSoup/ Se invece l'interfaccia è generata da javascript hai bisogno di librerie che si interfacciano con il browser tipo questa: http://selenium-python.readthedocs.org/en/latest/ -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it javascript:; http://lists.python.it/mailman/listinfo/python -- Paolo Leggio Cel. +39.349.3420555 | Tel. +39.02.87244015 www.digitalmonkeys.it | pa...@digitalmonkeys.it @ Via Vittorio Scialoia, 11/A - 20161 Milano - Italy ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
On 11/09/2014 03:01 PM, Paolo Leggio wrote: Salve a tutti.. visto che se ne parla.. ci sono anche delle soluzioni intermedie? se io, facendo web scraping di una pagina web, avessi bisogno di eseguire delle funzioni javascript presenti in uno script che viene caricato dinamicamente, ho qualche strada che non sia selenium? interfacciarsi al browser risulta veramente poco performante, mentre a me servirebbe parsare il codice html e eseguire una semplice funzione js su alcuni dei dati presenti. al momento l'unica alternativa che ho valutato è quella di tradurre in python le funzioni che mi interessano in modo da ottenere lo stesso risultato, ma ovviamente mi richiede molto piu tempo di sviluppo... in piu un aggiornamento ogni volta che queste funzioni vengono modificate. ciao forse può esserti utile un interprete JS per python, come ad esempio python-spidermonkey ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
On 11/09/2014 05:00 PM, Robotica wrote: On 11/09/2014 03:01 PM, Paolo Leggio wrote: Salve a tutti.. visto che se ne parla.. ci sono anche delle soluzioni intermedie? se io, facendo web scraping di una pagina web, avessi bisogno di eseguire delle funzioni javascript presenti in uno script che viene caricato dinamicamente, ho qualche strada che non sia selenium? interfacciarsi al browser risulta veramente poco performante, mentre a me servirebbe parsare il codice html e eseguire una semplice funzione js su alcuni dei dati presenti. al momento l'unica alternativa che ho valutato è quella di tradurre in python le funzioni che mi interessano in modo da ottenere lo stesso risultato, ma ovviamente mi richiede molto piu tempo di sviluppo... in piu un aggiornamento ogni volta che queste funzioni vengono modificate. ciao forse può esserti utile un interprete JS per python, come ad esempio python-spidermonkey o PyV8 https://code.google.com/p/pyv8/ ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 07 novembre 2014 22:54:52 CET, Marco Beri marcob...@gmail.com ha scritto: Il 07/nov/2014 20:59 Riccardo Lemmi ricca...@reflab.com ha scritto: Se invece l'interfaccia è generata da javascript hai bisogno di librerie che si interfacciano con il browser tipo questa: http://selenium-python.readthedocs.org/en/latest/ Analizzando le post, spesso fai a meno di Selenium, anche se la pagina fa pesante uso di javascript. Appena ho modo di analizzare effettivamente la pagina, cercherò la soluzione più adatta. (Devo rubare le credenziali di un mio collega). Se con il plugin di firefox che mi permette di analizzare gli scambi tra browser e server (non ne ricordo il nome, ma l'ho segnato da qualche parte) vedo che alla pressione del submit viene generato un semplice post con il campo del form da cambiare e il relativo dato, non devo praticamente parsare la pagina, genero direttamente il submit... G giusto? Per quanto riguarda la gestione delle temporizzazioni, su linux avrei usato un cron generato dalla prima esecuzione del programma, con windows come suggerite di fare? (Non conosco i metodi di temporizzazione di windows) byez -- Tesssoro... dov'è il mio tesssoro. http:\\www.gollumone.it Inviato dal mio cellulare Android con K-9 Mail, scusate gli errori di battitura. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 08/nov/2014 09:18 Gollum1 gollum1.smeag...@gmail.com ha scritto: Se con il plugin di firefox che mi permette di analizzare gli scambi tra browser e server (non ne ricordo il nome, ma l'ho segnato da qualche parte) vedo che alla pressione del submit viene generato un semplice post con il campo del form da cambiare e il relativo dato, non devo praticamente parsare la pagina, genero direttamente il submit... G giusto? I developer tools di chrome lo fanno senza problemi. Puoi registrare la post e, praticamente e se ti va bene, ti basta mimicarla. Per quanto riguarda la gestione delle temporizzazioni, su linux avrei usato un cron generato dalla prima esecuzione del programma, con windows come suggerite di fare? (Non conosco i metodi di temporizzazione di windows) Uh... Scheduled task? Boh Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Salve a tutti, (e' il mio primo post) Il 08/11/2014 09:18, Gollum1 ha scritto: Appena ho modo di analizzare effettivamente la pagina, cercherò la soluzione più adatta. (Devo rubare le credenziali di un mio collega). Se con il plugin di firefox che mi permette di analizzare gli scambi tra browser e server (non ne ricordo il nome, ma l'ho segnato da qualche parte) vedo che alla pressione del submit viene generato un semplice post con il campo del form da cambiare e il relativo dato, non devo praticamente parsare la pagina, genero direttamente il submit... G giusto? Non e' necessario nessun plugin, e' sufficiente usare il page inspector di ff (ctrl+shift+k) e dare un occhio al tab Network Monitor. https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor Per riuscire a fare quello che intendi, devi pero' essere sicuro che la pagina non abbia un meccanismo di csrf Per quanto riguarda la gestione delle temporizzazioni, su linux avrei usato un cron generato dalla prima esecuzione del programma, con windows come suggerite di fare? (Non conosco i metodi di temporizzazione di windows) byez Mi pare che tu voglia farlo programmaticamente. Se si temo che ti tocchera' seguire questo cammino: http://blog.ziade.org/2007/11/01/scheduling-tasks-in-windows-with-pywin32/ Girolamo ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 08 novembre 2014 10:35:36 CET, girolamo girolamo.nelle...@gmail.com ha scritto: Salve a tutti, (e' il mio primo post) Benvenuto e grazie dell'intervento... Non e' necessario nessun plugin, e' sufficiente usare il page inspector di ff (ctrl+shift+k) e dare un occhio al tab Network Monitor. https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor OK... Allora le cose sono cambiate dall'ultima volta che ho usato FF (è vero che anche in chrome, che uso sempre, dovrebbe essere già incluso, come mi ha anche confermato Marco) Per riuscire a fare quello che intendi, devi pero' essere sicuro che la pagina non abbia un meccanismo di csrf Sarebbe il sistema di verifica dei campi? Andrò a verificare, è probabile, visto che la pagina è un prodotto Cisco, e questi non scherzano quando fanno i loro lavori... :-P Per quanto riguarda la gestione delle temporizzazioni, su linux avrei usato un cron generato dalla prima esecuzione del programma, con windows come suggerite di fare? (Non conosco i metodi di temporizzazione di windows) byez Mi pare che tu voglia farlo programmaticamente. Se si temo che ti tocchera' seguire questo cammino: È ancora in fase di valutazione, credo che cui possano essere diverse strade, dal creare lo script come servizio di windows, e quindi sempre avviato e quando dall'orologio di sistema sente che è il momento di fare qualcosa, lo fa, e allo stesso tempo ogni tot tempo verifica pure un eventuale cambio del file degli eventi programmati. Un programma sempre in esecuzione anche senza essere un servizio (però se è un servizio, se dovesse interrompersi dovrebbe essere anche riavviato in automatico) Oppure una programmazione del corrispettivo cron di windows per fare eseguire nuovamente il programma nel momento in cui scade un evento già programmato. http://blog.ziade.org/2007/11/01/scheduling-tasks-in-windows-with-pywin32/ Gli darò un'occhiata... Grazie byez -- Tesssoro... dov'è il mio tesssoro. http:\\www.gollumone.it Inviato dal mio cellulare Android con K-9 Mail, scusate gli errori di battitura. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] Automatizzare inserimento dati su pagina web
Ecco il mio problema, a parte che lo script dovrebbe girare, purtroppo, su una macchina winzoz, dovrei analizzare un file CVS, in cui ho solamente un campo data, un campo orario e un numero di telefono. E questo è tutto sommato banale, il problema è che nel momento indicato dalla data e dall'ora presa da un record del file, deve inserire il numero di telefono in un particolare campo di una pagina web (in intranet) e dare il submit della modifica. Dite che è fattibile la cosa o devo trovare altre soluzioni? byez -- Tesssoro... dov'è il mio tesssoro. http:\\www.gollumone.it Inviato dal mio cellulare Android con K-9 Mail, scusate gli errori di battitura. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
2014-11-07 16:05 GMT+01:00 Gollum1 gollum1.smeag...@gmail.com: Ecco il mio problema, a parte che lo script dovrebbe girare, purtroppo, su una macchina winzoz, dovrei analizzare un file CVS, in cui ho solamente un campo data, un campo orario e un numero di telefono. E questo è tutto sommato banale, il problema è che nel momento indicato dalla data e dall'ora presa da un record del file, deve inserire il numero di telefono in un particolare campo di una pagina web (in intranet) e dare il submit della modifica. Dite che è fattibile la cosa o devo trovare altre soluzioni? Usa la libreria requests: ci ho fatto cose egregie che chi ha realizzato i siti manco pensava fosse possibile fare in automatico. http://docs.python-requests.org/en/latest/ Ciao. Marco. -- http://beri.it/ - Un blog http://beri.it/i-miei-libri/ - Qualche libro ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Gollum1 wrote: Ecco il mio problema, a parte che lo script dovrebbe girare, purtroppo, su una macchina winzoz, dovrei analizzare un file CVS, in cui ho solamente un campo data, un campo orario e un numero di telefono. E questo è tutto sommato banale, il problema è che nel momento indicato dalla data e dall'ora presa da un record del file, deve inserire il numero di telefono in un particolare campo di una pagina web (in intranet) e dare il submit della modifica. Dite che è fattibile la cosa o devo trovare altre soluzioni? byez Se la form è stabile e non richiede l'analisi del codice html 'request' è la soluzione più semplice. Se devi fare l'analisi della pagina prova: http://www.crummy.com/software/BeautifulSoup/ Se invece l'interfaccia è generata da javascript hai bisogno di librerie che si interfacciano con il browser tipo questa: http://selenium-python.readthedocs.org/en/latest/ -- Riccardo Lemmi ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Automatizzare inserimento dati su pagina web
Il 07/nov/2014 20:59 Riccardo Lemmi ricca...@reflab.com ha scritto: Se invece l'interfaccia è generata da javascript hai bisogno di librerie che si interfacciano con il browser tipo questa: http://selenium-python.readthedocs.org/en/latest/ Analizzando le post, spesso fai a meno di Selenium, anche se la pagina fa pesante uso di javascript. Ciao. Marco. ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python