3

提供されたヘルプに事前に感謝します。

Python 2.7がインストールされたubuntu 12.10を使用しています。http および https 接続をテストするために、他の投稿に基づいて簡単なスクリプトを作成しました。

import urllib2, urllib

def set_proxy():
  proxy = urllib2.ProxyHandler({'http': 'http://<proxyhost>:<proxyport>'})
  opener = urllib2.build_opener(proxy, urllib2.HTTPHandler)
  urllib2.install_opener(opener)

def http_call():
  conn = urllib2.urlopen('http://www.whatismyip.com/')
  return conn.read()

def https_call():
  conn = urllib2.urlopen('https://chase.com/')
  return conn.read()

set_proxy()
webpage = open('webpage.html', 'w')
return_str = https_call()
webpage.write(return_str)
webpage.close()
print ("check for output in webpage.html")

http を使用したテストは正常に機能しますが、https を使用すると、次の出力が生成されます。

Traceback (most recent call last):
File "test.py", line 18, in <module>
  return_str = https_call()
File "test.py", line 13, in https_call
  conn = urllib2.urlopen('https://chase.com/')
File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
  return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 401, in open
  response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 419, in _open
  '_open', req)
File "/usr/lib/python2.7/urllib2.py", line 379, in _call_chain
  result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1219, in https_open
  return self.do_open(httplib.HTTPSConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1181, in do_open
  raise URLError(err)
urllib2.URLError: <urlopen error [Errno 110] Connection timed out>

これが私のセットアップです:

root@sc11137376:/usr/local/pythonbrew#  lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.10
Release:        12.10
Codename:       quantal

root@sc11137376:/usr/local/pythonbrew# python --version
Python 2.7.3

root@sc11137376:/usr/local/pythonbrew# openssl version
OpenSSL 1.0.1c 10 May 2012

同様の古い投稿で、openssl がインストールされたソースから python を再構築するという提案を見ました。これははるかに新しいubuntu / pythonバージョンであり、opensslはすでにシステムにあるため、私の問題に対する別の解決策があることを願っています。

任意のポインタをいただければ幸いです。

注:環境で HTTPS_PROXY を設定すると、エラー メッセージが次のように変更されました (エラー番号 110 から 113 に)。

urllib2.URLError: <urlopen error [Errno 113] No route to host>

ところで、以下も失敗します:

root@sc11137376:/usr/local/pythonbrew# openssl s_client -connect encrypted.google.com:443
connect: No route to host
connect:errno=113

この問題を解決するために私にできることがあるかどうかわかりません。

4

1 に答える 1

0

URLError:urlopen エラー [Errno 113] ホストへのルートがありません

私は同じ種類のエラーを抱えていました.マシンAからマシンBでいくつかのスクリプトをリモートで実行したかったのですが(これはブラウザの自動化を行います)、最後に上記のエラーが発生しました.HTTPSのファイアウォール設定を無効にしました.

RHEL6.4 でファイアウォール設定を無効にする方法を教えてください。- [設定] (パネルの左側) > [管理] > [ファイアウォール] > [ファイアウォールの設定] ウィンドウで、[セキュアな WWW (HTTPS)] にチェックを入れます -(root ユーザーである必要があります) >> [適用] をクリックします >> クリックします無効化ボタン。

後で、リモート マシン B で問題なくスクリプトを実行できました。

于 2015-09-29T08:45:18.600 に答える