2009-06-15 27 views
3

我使用Python的urllib2與Tor作爲訪問網站的代理。當我 打開該網站的主頁,它工作正常,但是當我嘗試查看登錄頁面 (實際上沒有登錄,但只是觀看)我得到以下錯誤...Python使用Tor作爲代理的urllib2超時?

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

爲了解決這個問題我做了以下:

import socket 
socket.setdefaulttimeout(None). 

我仍然得到相同的超時錯誤。

  1. 這是否意味着網站在服務器端超時? (我不知道很多 關於http進程,所以很抱歉,如果這是一個愚蠢的問題)
  2. 有沒有什麼辦法可以糾正它,使Python能夠查看頁面?

感謝, 羅布

回答

0

我不知道有足夠的瞭解Tor來確定,但超時可能無法在服務器端發生,但在Tor的之一,你和服務器之間的某個節點。在這種情況下,除了重新嘗試連接之外,您無能爲力。

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) 
+0

感謝您的答覆。我已經構建並安裝了代理處理程序,但我沒有想過要更改用戶代理。我嘗試過但沒有改變任何東西。我也不認爲它被明確阻止,因爲我可以訪問主頁面。 該網站是否有可能設置的默認超時時間很短,並且代理服務器花費的額外時間導致超時? – user123304 2009-06-15 20:38:48

0

urllib2.urlopen( url,[data] [,timeout])

可選的timeout參數指定阻塞操作(如未指定,將使用全局默認超時設置)的超時時間(以秒爲單位)。這實際上只適用於HTTP,HTTPS,FTP和FTPS連接。

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