Il giorno sab, 29/09/2012 alle 16.32 +0200, Marco Giusti ha scritto:
> On Sat, Sep 29, 2012 at 12:21:36PM +0200, Pietro Battiston wrote:
> > Il giorno sab, 29/09/2012 alle 02.19 +0200, Pietro Battiston ha scritto:
> > > Sì, ho provato, non cambia niente.
> > > 
> > > L'idea che mi sono fatto è che wget sia semplicemente incapace di
> > > parsare un proxy del genere (e d'altronde non c'è altro modo per
> > > darglielo). Non dispero invece del tutto in urllib2, semplicemente non
> > > capisco cosa stia succedendo.
> 
> senza sapere ne' leggere ne' scrivere, le seguenti opzioni non ti sono
> di aiuto, magari solo per semplificare l'url del proxy?
> 
>        --proxy-user=UTENTE   imposta il nome utente per il proxy a UTENTE.
>        --proxy-passwd=PASS   imposta la password per il proxy a PASS.
> 

Uh, molto carini questi parametri. In effetti non riuscendo a passare
come argomento il proxy non avevo neanche immaginato di poterne passare
i dati di autenticazione.

Il fatto che anche in questo modo il proxy mi dia un errore 407 mi
lascia sempre più sconsolato.


> e magari una cosa del genere, sempre senza saper ne' leggere ne'
> scrivere?
> 
>       #! /usr/bin/python
> 
>       import urllib2
> 
>       proxy_url = r'http://proxybiblio2.si.unimib.it:8080/'}
>       proxy = urllib2.ProxyHandler({'http': proxy_url})
>       auth = urllib2.ProxyDigestAuthHandler()
>       auth.add_password(realm, proxy_url, 'username', 'password')
>       opener = urllib2.build_opener(proxy, auth, urllib2.HTTPHandler)
>       urllib2.install_opener(opener)
>       conn = urllib2.urlopen('http://webofknowledge.com')
>       return_str = conn.read()
> 


Questo è esattamente quello che provavo, e per l'appunto dopo l'errore
407 si arrende...

In cambio ho scoperto qualcos'altro di interessante. A differenza della
classe ProxyDigestAuthHandler, la ProxyBasicAuthHandler ha due metodi
"http_error_auth_reqed" e "get_cnonce", che sembrano interessanti (e
sono chiaramente totalmente privi di documentazione).

Inoltre entrambe le classi hanno un metodo "http_error_407(req, fp,
code, msg, hdrs)" la cui documentazione è proprio
"Retry the request with authentication information, if available."

Il mio problema è come usarli questi metodi. Ora ho capito¹ come
recuperare gli header della pagina di errore e provo un po' a giocarci
alla cieca...

ciao

Pietro
        
¹
http://stackoverflow.com/questions/6402051/getting-error-headers-with-urllib2



_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a