2016-07-06 31 views
0

我正在尝试使用urllib,urllib2或请求以从站点获取特定数据。我使用Python2.7。 我不断收到一个错误:使用urllib或请求从URL获取数据

requests.exceptions.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:590) 

这是我的代码的请求:

import requests 
    r = requests.get("https://metoc.ndbc.noaa.gov/jtwc#_48_INSTANCE_0SiamlX2KcM6_=https%3A%2F%2Fmetoc.ndbc.noaa.gov%2FProductFeeds-portlet%2Fimg%2Fjtwc%2Fhtml%2Fcoop.jsp%3F") 

我曾尝试一切,但没有任何工程:

我试图验证参数设置为false。我犯了同样的错误。 我试图使用一个适配器(如其他答案中所述)以便使用另一个SSL版本。我仍然得到同样的错误。

任何想法可能是什么问题? 是否可以让主机锁定访问权限,并且不可能获取此URL的源代码?

+3

适合我。我主要收到一堆javascript。 –

+0

该代码适合我。 –

+0

你使用的Python 2.7的哪个版本,以及什么版本的OS? – jwodder

回答

2

All of them in macs with Yosemite or ElCapitan...

这些版本仍然会OpenSSL 0.9.8版本,所以我的猜测是,你的Python是对这个版本的OpenSSL(Python不使用OS X原生TLS堆栈)链接。但由于服务器仅支持ECDHE密码,OpenSSL 0.9.8不支持这些密码,因此握手将失败。有关更多详细信息,请参阅report from SSLLabs

+0

谢谢!那么我的选择是什么? – user1919

+0

@ user1919升级您的openssl ftp://ftp.openssl.org/source/ –

+0

@Padraic Cunningham我使用brew更新了我的openssl。这并没有解决问题! – user1919