私はプロキシとしてTorを使ってPythonのurllib2を使っていますウェブサイトにアクセスする。ときに サイトのメインページを開くとうまく動作しますが、ログインページを表示しようとすると (実際にはログインしていませんが、表示するだけです)次のエラーが表示されます。
URLError: <urlopen error (10060, "Operation timed out")>
これに対抗するために、私は次のようにしました:
import socket
socket.setdefaulttimeout(None).
私はまだ同じタイムアウトエラーが出ます。
- これは、Webサイトがサーバー側でタイムアウトしていることを意味しますか? (私はあまり知りません HTTPプロセスについては、これが愚かな質問である場合はとても申し訳ありません)
- Pythonでページを表示できるように修正する方法はありますか?
ありがとう、 ロブ
回答:
回答№1の場合は3による Pythonソケットドキュメント デフォルトはタイムアウトなしなので、「なし」の値を指定するのは冗長です。
接続が切断されているには、いくつかの原因が考えられます。一つは、あなたのユーザエージェントが "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)
回答№2の場合は0
私は確かにTorについて十分に知りませんタイムアウトはサーバー側では発生しないかもしれませんが、あなたとサーバーの間のどこかにあるTorノードの1つで発生します。その場合、接続を再試行する以外にできることはありません。
回答№3の場合は0
urllib2.urlopen(url [、data] [、timeout])
オプションのtimeoutパラメータは、接続試行などのブロック操作のタイムアウト(秒単位)(指定されていない場合は、グローバルデフォルトタイムアウト設定が使用されます)。これは実際にはHTTP、HTTPS、FTP、およびFTPS接続に対してのみ機能します。
http://docs.python.org/library/urllib2.html