我使用Python的urllib2和Tor作为访问网站的代理。当我 打开网站的主页它工作正常,但当我尝试查看登录页面时 (实际上没有登录但只是查看它)我收到以下错误...
URLError: <urlopen error (10060, 'Operation timed out')>
为了抵消这一点,我做了以下事情:
import socket
socket.setdefaulttimeout(None).
我仍然得到相同的超时错误。
谢谢, 罗布
答案 0 :(得分: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')
您可能还想尝试覆盖代理设置,然后尝试使用以下内容打开网址:
proxy = urllib2.ProxyHandler({"http":"http://127.0.0.1:8118"})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
答案 1 :(得分:0)
我不太了解Tor确定,但是超时可能不会发生在服务器端,而是发生在您和服务器之间的某个Tor节点上。在这种情况下,除了重试连接之外别无他法。
答案 2 :(得分:0)
urllib2.urlopen(url [,data] [,timeout])
可选的timeout参数指定阻塞操作(如连接尝试)的超时(以秒为单位)(如果未指定,将使用全局默认超时设置)。这实际上仅适用于HTTP,HTTPS,FTP和FTPS连接。