[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