当URL附加端口号时,urllib2失败

时间:2013-07-24 20:41:43

标签: python urllib2

以下代码:

import urllib2
file = urllib2.urlopen("http://foo.bar.com:82")

在我的mac上运行得很好(运行Python 2.7.1的OS X 10.8.4。它打开了URL,我可以毫无问题地解析文件。

当我在GoDaddy Python 2.7.3(或2.4)中尝试使用完全相同的代码(这两行)时收到错误:

urllib2.URLError: <urlopen error (111, 'Connection refused')

问题与端口有关:82是地址的重要组成部分。我尝试过使用带掩码等的转发地址,但没有任何作用。

知道为什么它可以在一个环境中工作而不在另一个(表面上相似)的环境中工作吗?任何想法如何解决这个问题?我也试过Mechanize无济于事。以前的帖子建议关注urllib2.HTTPBasicAuthHandler,但它在我的OS X环境中运行正常,没有任何特殊之处。

欢迎提出意见。

2 个答案:

答案 0 :(得分:0)

Connection refused表示您的操作系统尝试联系远程主机,但是有一个关闭的端口&#34;消息。

很有可能,这是因为GoDaddy与foo.bar.com之间存在防火墙。最有可能的是,foo.bar.com只能从您的计算机或本地网络访问,但也可能是GoDaddy阻止访问奇怪的端口。

答案 1 :(得分:0)

通过快速浏览GoDaddy支持论坛,看起来它们只支持对共享主机上的端口80(HTTP)和443(HTTPS)的传出请求。参见例如

http://support.godaddy.com/groups/web-hosting/forum/topic/curl-to-ports-other-than-80/