3

我使用 Python 的 urllib2 和 Tor 作为代理来访问网站。当我打开网站的主页时,它工作正常,但是当我尝试查看登录页面(实际上不是登录,只是查看它)时,我收到以下错误...

URLError: <urlopen error (10060, 'Operation timed out')>

为了解决这个问题,我做了以下事情:

import socket
socket.setdefaulttimeout(None).

我仍然收到相同的超时错误。

  1. 这是否意味着网站在服务器端超时?(我不太了解http进程,如果这是一个愚蠢的问题,我很抱歉)
  2. 有什么方法可以纠正它,以便 Python 能够查看该页面?

谢谢,罗伯

4

3 回答 3

3

根据Python Socket Documentation,默认设置是无超时,因此指定“None”值是多余的。

连接断开的可能原因有很多。一种可能是您的用户代理是“Python-urllib”,它很可能被阻止。要更改您的用户代理:

request = urllib2.Request('site.com/login')
request.add_header('User-Agent','Mozilla/5.0 (X11; U; Linux i686; it-IT; rv:1.9.0.2) Gecko/2008092313 Ubuntu/9.04 (jaunty) Firefox/3.5')

在尝试使用以下内容打开 url 之前,您可能还想尝试覆盖代理设置:

proxy = urllib2.ProxyHandler({"http":"http://127.0.0.1:8118"})  
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
于 2009-06-15T20:22:42.597 回答
0

urllib2.urlopen(url[, 数据][, 超时])

可选的 timeout 参数以秒为单位指定连接尝试等阻塞操作的超时时间(如果未指定,将使用全局默认超时设置)。这实际上只适用于 HTTP、HTTPS、FTP 和 FTPS 连接。

http://docs.python.org/library/urllib2.html

于 2009-06-16T00:09:28.387 回答
0

我对 Tor 的了解不够,无法确定,但超时可能不会发生在服务器端,而是发生在您和服务器之间的某个 Tor 节点上。在这种情况下,您只能重试连接。

于 2009-06-15T20:05:15.860 回答