3

私は、WebサイトにアクセスするためのプロキシとしてTorを使用してPythonのurllib2を使用しています。サイトのメインページを開くと正常に機能しますが、ログインページを表示しようとすると(実際にはログインせずに表示するだけです)、次のエラーが発生します...

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

これに対抗するために、私は次のことを行いました。

import socket
socket.setdefaulttimeout(None).

それでも同じタイムアウトエラーが発生します。

  1. これは、Webサイトがサーバー側でタイムアウトしていることを意味しますか?(私はhttpプロセスについてあまり知らないので、これがばかげた質問であるならば申し訳ありません)
  2. Pythonがページを表示できるように修正する方法はありますか?

ありがとう、ロブ

4

3 に答える 3

3

Python Socket Documentationによると、デフォルトはタイムアウトではないため、「None」の値を指定することは冗長です。

接続が切断される理由はいくつか考えられます。1 つは、ユーザー エージェントが "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

確かにTorについて十分に知っているわけではありませんが、タイムアウトはサーバー側ではなく、あなたとサーバーの間のどこかにあるTorノードの1つで発生する可能性があります. その場合、接続を再試行する以外にできることはありません。

于 2009-06-15T20:05:15.860 に答える
0

urllib2.urlopen(url[, データ][, タイムアウト])

オプションの timeout パラメーターは、接続試行などのブロック操作のタイムアウトを秒単位で指定します (指定されていない場合は、グローバルなデフォルトのタイムアウト設定が使用されます)。これは、実際には HTTP、HTTPS、FTP、および FTPS 接続でのみ機能します。

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

于 2009-06-16T00:09:28.387 に答える