2010-11-18 9 views
0

J'essaie de lire une URL dans notre réseau d'entreprise. Spesifically le serveur je contacter est dans un bureau et le PC client est dans un autre:Qu'est-ce qui provoque urllib2.urlopen() à se connecter via proxy?

print(urlopen(r"http://london.mycompany/mydir/").read()) 

Chaque fois que je lance cette fonction je reçois:

Traceback (most recent call last): 
    File "<stdin>", line 1, in ? 
File "C:\Python24\lib\urllib2.py", line 130, in urlopen 
    return _opener.open(url, data) 
File "C:\Python24\lib\urllib2.py", line 364, in open 
    response = meth(req, response) 
File "C:\Python24\lib\urllib2.py", line 471, in http_response 
    response = self.parent.error(
File "C:\Python24\lib\urllib2.py", line 402, in error 
return self._call_chain(*args) 
File "C:\Python24\lib\urllib2.py", line 337, in _call_chain 
result = func(*args) 
File "C:\Python24\lib\urllib2.py", line 480, in http_error_default 
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) 
urllib2.HTTPError: HTTP Error 407: Proxy Authentication Required 

La chose étrange est qu'il n'y a pas de pare-feu entre ces deux ordinateurs - pour une raison quelconque url a décidé de se connecter au serveur web via le proxy que nous utilisons normalement pour se connecter au contenu en dehors de l'entreprise, et dans ce cas, cela échoue parce que je ne l'ai pas authentifié. Je suis assez sûr que la panne se produit dans le PC client: J'ai fait un nslookup et un ping au serveur pour confirmer qu'il y a une connexion entre les deux ordinateurs, mais quand je regarde la transaction en utilisant TCPView pour Windows I peut voir que le processus python.exe se connecte à un serveur complètement différent (oui, le proxy!).

Alors qu'est-ce qui pourrait causer cela? Notez que la variable os.environ ["http_proxy"] n'est PAS définie - cette variable est souvent utilisée pour connecter urllib via un serveur proxy. Ce n'est pas le cas ici. Pourrait-il y avoir quelque chose d'autre qui pourrait avoir le même effet? Exécution de Python 2.4.4 sous Windows XP 32 bits dans un environnement d'entreprise très verrouillé.

+0

Avez-vous essayé de vous connecter à l'adresse IP? Qu'est-ce qui se passe alors? Si l'adresse IP fonctionne, vous rencontrez des problèmes avec la recherche de domaine. – marr75

Répondre

2

Il lit à partir des paramètres du système. Utiliser urllib.FancyURLOpener:

opener = urllib.FancyURLopener({}) 
f = opener.open("http://london.mycompany/mydir/") 
f.read() 
+0

Mais de quel système s'agit-il? –

+0

@Salim fichiers registre/système plist, en fonction de l'OS. – khachik

+0

Python2.4.4 sous Windows 32bit - est-ce que vous pourriez me montrer le paramètre spécifique? Savez-vous s'il existe un moyen de contourner cela? –