[Python] Problema con proxy
Pietro Battiston
me a pietrobattiston.it
Sab 29 Set 2012 18:10:29 CEST
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
Maggiori informazioni sulla lista
Python