在 ubuntu 12.10 上使用 https 和 python 2.7 的 urlopen 错误 [Errno 110] [英] urlopen error [Errno 110] with https and python 2.7 on ubuntu 12.10

查看:47
本文介绍了在 ubuntu 12.10 上使用 https 和 python 2.7 的 urlopen 错误 [Errno 110]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

预先感谢您提供的任何帮助.

Thank you in advance for any help provided.

我在 ubuntu 12.10 上安装了 python 2.7.我根据其他帖子写了一个简单的脚本来测试 http 和 https 连接:

I am on ubuntu 12.10 with python 2.7 installed. I wrote a simple script based on other posts to test http and https connections:

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 会产生以下输出:

The test with http works fine, but with https produces the following output:

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.

I saw in a similar, older post suggestions to rebuild python from source with openssl installed. I am hoping there is a different solution to my problem, since this is much newer ubuntu/python version and openssl is already on the system.

感谢任何指点.

注意:在环境中设置 HTTPS_PROXY 将错误消息更改为以下内容(从错误编号 110 到 113):

Note: Setting HTTPS_PROXY in the environment changed the error message to the following (from error number 110 to 113):

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

顺便说一句,以下也失败了:

Btw, the following also fails:

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

不确定我是否可以做些什么来解决这个问题.

Not sure if there is anything I can do to resolve this problem.

推荐答案

URLError:urlopen error [Errno 113] No route to host

我遇到了同样的错误:我想从机器 A(它执行一些浏览器自动化操作)在机器 B 上远程执行一些脚本,最后我遇到了上述错误,后来我禁用了 HTTPS 的防火墙设置.

I had a same kind of error : i wanted to execute some scripts remotely on machine B from machine A (which does some browser automation stuff) and finally i had the error as stated above later i disabled the firewall setting for the HTTPS.

我如何在 RHEL6.4 上禁用防火墙设置?- 单击设置(在面板左侧)> 管理 > 防火墙 > 在防火墙配置"窗口中:选中安全 WWW (HTTPS)"-(您需要是 root 用户)>> 单击应用">> 单击禁用按钮.

How i disabled the fire wall setting on RHEL6.4 ? - click settings (on left side of the panel) > Administration > Firewall > on "Firewall Configuration" window : check the "secure WWW (HTTPS)" -(you need to be root user) >> click "Apply" >> click the disable button.

后来我可以轻松地在远程机器 B 上执行脚本.

later i was able to execute the scripts on remote machine B without any hassle.

这篇关于在 ubuntu 12.10 上使用 https 和 python 2.7 的 urlopen 错误 [Errno 110]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆