Re: [Python] Automatizzare inserimento dati su pagina web

2014-12-01 Per discussione girolamo

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

2014-11-30 Per discussione Marco De Paoli
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

2014-11-30 Per discussione Gollum1
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

2014-11-30 Per discussione Gollum1
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

2014-11-30 Per discussione Gollum1
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

2014-11-29 Per discussione Gollum1
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

2014-11-29 Per discussione girolamo

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

2014-11-29 Per discussione Gollum1
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-24 Per discussione enrico franchi
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

2014-11-24 Per discussione Gollum1
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 Per discussione Carlos Catucci
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

2014-11-24 Per discussione Gollum1
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

2014-11-24 Per discussione Marco De Paoli
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

2014-11-20 Per discussione Gollum1
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

2014-11-20 Per discussione Marco De Paoli
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

2014-11-20 Per discussione Daniele Varrazzo

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

2014-11-20 Per discussione Gollum1
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

2014-11-20 Per discussione Marco De Paoli
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

2014-11-20 Per discussione Simone Federici
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

2014-11-20 Per discussione Simone Federici
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

2014-11-20 Per discussione Simone Federici
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

2014-11-20 Per discussione Gollum1
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

2014-11-09 Per discussione Paolo Leggio
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

2014-11-09 Per discussione Robotica
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

2014-11-09 Per discussione Robotica
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

2014-11-08 Per discussione Gollum1
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

2014-11-08 Per discussione Marco Beri
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

2014-11-08 Per discussione girolamo

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

2014-11-08 Per discussione Gollum1
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

2014-11-07 Per discussione Gollum1
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 Per discussione Marco Beri
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

2014-11-07 Per discussione Riccardo Lemmi
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

2014-11-07 Per discussione Marco Beri
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