Pourquoi urllib2 ne fonctionne pas pour moi?
J'ai installé 3 différentes script python sur mon ubuntu 10.04 32 bits machine avec python 2.6.5.
Tous ces utiliser le urllib2 et j'ai toujours cette erreur:
urllib2.URLError: <urlopen error [Errno 110] Connection timed out>
Pourquoi ?
Exemples:
>>> import urllib2
>>> response = urllib2.urlopen("http://www.google.com")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 1161, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.6/urllib2.py", line 1136, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 110] Connection timed out>
>>> response = urllib2.urlopen("http://search.twitter.com/search.atom?q=hello&rpp=10&page=1")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 1161, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.6/urllib2.py", line 1136, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 110] Connection timed out>
Mise à JOUR:
$ ping google.com
PING google.com (72.14.234.104) 56(84) bytes of data.
64 bytes from google.com (72.14.234.104): icmp_seq=1 ttl=54 time=25.3 ms
64 bytes from google.com (72.14.234.104): icmp_seq=2 ttl=54 time=24.6 ms
64 bytes from google.com (72.14.234.104): icmp_seq=3 ttl=54 time=25.1 ms
64 bytes from google.com (72.14.234.104): icmp_seq=4 ttl=54 time=25.0 ms
64 bytes from google.com (72.14.234.104): icmp_seq=5 ttl=54 time=23.9 ms
^C
--- google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 23.959/24.832/25.365/0.535 ms
$ w3m http://www.google.com
w3m: Can't load http://www.google.com.
$ telnet google.com 80
Trying 1.0.0.0...
telnet: Unable to connect to remote host: Connection timed out
Mise à JOUR 2:
Je suis à la maison et je suis en utilisant un routeur et un point d'Accès :-. Toutefois, j'ai juste remarqué que Firefox ne fonctionne pas pour moi. Mais chrome, synaptique et d'autres navigateurs comme Midori et de l'Epiphanie, etc ne fonctionne pas.
Mise à JOUR 3:
>>> useragent = 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Ubuntu/10.04 Chromium/6.0.472.62 Chrome/6.0.472.62 Safari/534.3)'
>>> request = urllib2.Request('http://www.google.com/')
>>> request.add_header('User-agent', useragent )
>>> urllib2.urlopen(request)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 1161, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.6/urllib2.py", line 1136, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 110] Connection timed out>
Mise à JOUR 4:
>>> socket.setdefaulttimeout(50)
>>> urllib2.urlopen('http://www.google.com')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.6/urllib2.py", line 391, in open
response = self._open(req, data)
File "/usr/lib/python2.6/urllib2.py", line 409, in _open
'_open', req)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 1161, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.6/urllib2.py", line 1136, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 110] Connection timed out>
Mise à JOUR 5:
Wireshark résultats ( packet sniffer ):
Firefox: http://bit.ly/chtynm
Chrome: http://bit.ly/9ZjILK
Midori: http://bit.ly/cKilC4
midori est un navigateur qui fonctionne pour moi. Seulement Firefox ne fonctionne pas.
Un pare-feu bloquant sortant le trafic HTTP, peut-être?
Peut-être que votre accès à internet via un serveur proxy?
proxy ? Comment puis-je le savoir ? Je suis à la maison et je suis en utilisant un routeur et un point d'Accès :-\. Toutefois, j'ai juste remarqué que Firefox ne fonctionne pas pour moi. Mais chrome, synaptic, etc ne fonctionne pas.
ressemble à une question de superuser.com
OriginalL'auteur xRobot | 2010-10-22
Vous devez vous connecter pour publier un commentaire.
Comme le suggère le cas, vérifiez la configuration du réseau en premier.
Tout d'abord, vérifiez que vous pouvez exécuter la commande ping à l'hôte que vous essayez de vous connecter à:
Puis essayez une connexion HTTP à l'aide par exemple
w3m
:OriginalL'auteur codeape
je pense que dans un raeson droit maintenant , XRobot ils ne font pas confiance vous .
woh-ils ? elles 🙂
lorsque vous voulez faire un peu de ramper ou de grattage et vous voyez qu'ils n'ont pas confiance en vous , vous avez juste à jeter , comment est-ce ?
Tout d'abord, vous devez savoir que certains serveur web de filtre qu'ils contiennent des logiciels malveillants comme robot (peut-être qu'ils savent que vous êtes un robot, hmmm XRobot 🙂 ), comment font-ils? il y a beaucoup de façon de filtre : comme l'utilisation de captcha dans la page web , le filtrage par Utilisateur-Agent ...
Et parce que votre ping ICMP travail ,le navigateur google chrome, mais pas w3m-je vous suggérer de changer le User-Agent comme ceci:
peut-être que je suis la paranoïa ici, mais j'espère que cela peut vous aider 🙂
vous avez dit que firefox ne fonctionnent pas aussi, à essayer avec chrome en-tête (celui-ci est chromonuim heeader: Mozilla/5.0 (X11; U; Linux x86_64; fr-fr) AppleWebKit/534.3 (KHTML, like Gecko) Ubuntu/10.04 Chrome/6.0.472.62 Chrome/6.0.472.62 Safari/534.3), et d'essayer cette commande "dig google.com" assurez-vous que votre DNS fonctionne bien.
même erreur :(. Voir ci-dessus... j'ai édité la question à la fin.
c'est de plus en plus difficile :), définir un plus grand délai d'attente, mettez ce code avant "import socket; socket.setdefaulttimeout(10)" et maintenant ? et qu'entendez-vous firefox ne fonctionne pas ? pour google.com ou pour tout site web ?
+1 pour ta réponse. C'est seulement la paranoïa s'ils ne sont pas réellement à l'écoute.
OriginalL'auteur mouad
Pour que l'URL qui sont que vous essayez de vous connecter? Il pourrait y avoir un certain nombre de raisons pour cette erreur, la plupart d'entre eux d'avoir à faire avec un nom incorrect ou une adresse IP ou un problème avec votre lien vers l'hôte distant.
Êtes-vous en mesure de réaliser avec succès
telnet google.com 80
à partir d'un terminal? Ce qui se passe?$ telnet google.com 80 Essayer 1.0.0.0...: telnet: Unable to connect to remote host: Connection timed out
Quelque chose est bizarre avec votre résolution de nom. Ressemble au votre, probablement d'être mandaté, d'une certaine façon. Depuis votre
ping google.com
a montré l'adresse IP de google.com comme72.14.234.104
, essayez untelnet 72.14.234.104 80
. Si cela renvoie uneConnected to ...
message, vous savez que vous pouvez établir des connexions directes, mais vous avez un autre système à base de questions (à savoir l'utilisation de proxy et de résolution de nom DNS) pour le résoudre avant de vous connecter avec succès à l'aide deurllib2
. Cela dépend de votre système à retour de nom précis à résolution IP.$ telnet 72.14.234.104 80 Essayer 72.14.234.104...: telnet: Unable to connect to remote host: Connection timed out
OriginalL'auteur jathanism
Sons, comme le chrome et synaptique peut-être l'aide d'un proxy HTTP. Dans chrome, allez dans Options/Sous le capot/Modifier les Paramètres de Proxy. Vérifiez le gnome paramètres de proxy:
Ok, en fonction de votre wireshark décharges, firefox est en train de faire un DNS ipv6 demande et le chrome est en train de faire ipv4. Essayez de désactiver ipv6 dns dans firefox (kb.mozillazine.org/Network.dns.disableIPv6) pour confirmer.
OriginalL'auteur ataylor
Faire ces étapes une par une-
ping google.com
Si tout va bien, & que votre connexion internet est juste lent, puis le faire -
import socket
socket.setdefaulttimeout(300) #in seconds.
Cela permet de prolonger le délai d'expiration de votre support.
OriginalL'auteur Srikar Appalaraju
Avez-vous testé votre connexion réseau? Quelque chose sur l'autre extrémité n'est pas de répondre, en raison de la rupture de la connexion ou un refus de connexion.
Aussi, après la version de python que vous utilisez.
Mise à JOUR:
Ce n'est presque certainement un problème de réseau. J'ai aussi une Ubuntu 10.04 machine (32 bits) avec Python 2.6.5 c'est presque vierges de l'installer, et je n'arrive pas à reproduire le problème.
Ressemble le port 80 peut être bloqué: vous pouvez faire un ping et de résoudre l'adresse, mais vous ne pouvez pas tirer la page web. Vérifiez votre pare-feu.
chrome fonctionne... firefox pas. Je n'ai pas de pare-feu installé :-\
OriginalL'auteur Andrew Sledge
Je vivais un comportement similaire. Finalement, je me suis souvenu que j'avais l'exécution d'un script précédemment installé un proxy. Retrait de la procuration de urllib2 résolu mon problème. Cela n'explique pas votre telnet ou w3m mystères, mais il peut aider quelqu'un avec la urllib2.
Cette page m'a aidé à comprendre comment faire pour supprimer le proxy.
http://www.decalage.info/en/python/urllib2noproxy
Voici le code:
OriginalL'auteur Willis
Je pense qu'il y a un problème d'autorisations. J'ai eu le même problème sur mon Ubuntu 11.10. L'appel de python avec sudo a fait le tour pour moi. Essayez-vous;
OriginalL'auteur Muhammet Can