gpt4 book ai didi

python - 使用 urllib 下载 HTTPS 页面,错误 :14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error

转载 作者:太空狗 更新时间:2023-10-30 01:07:01 25 4
gpt4 key购买 nike

我正在使用最新的 KubuntuPython 2.7.6。我尝试使用以下代码下载 https 页面:

import urllib2

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding': 'none',
'Accept-Language': 'pl-PL,pl;q=0.8',
'Connection': 'keep-alive'}

req = urllib2.Request(main_page_url, headers=hdr)

try:
page = urllib2.urlopen(req)
except urllib2.HTTPError, e:
print e.fp.read()

content = page.read()
print content

但是,我得到这样的错误:

Traceback (most recent call last):
File "test.py", line 33, in <module>
page = urllib2.urlopen(req)
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 404, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 422, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1222, in https_open
return self.do_open(httplib.HTTPSConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1184, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno 1] _ssl.c:510: error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error>

如何解决?

已解决!

我使用了网址 https://www.ssllabs.com由@SteffenUllrich 提供。原来服务器使用的是TLS 1.2,所以我将python更新为2.7.10,并将我的代码修改为:

import ssl
import urllib2

context = ssl.SSLContext(ssl.PROTOCOL_TLSv1)

hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding': 'none',
'Accept-Language': 'pl-PL,pl;q=0.8',
'Connection': 'keep-alive'}

req = urllib2.Request(main_page_url, headers=hdr)

try:
page = urllib2.urlopen(req,context=context)
except urllib2.HTTPError, e:
print e.fp.read()

content = page.read()
print content

现在它下载页面。

最佳答案

Im using newest Kubuntu with Python 2.7.6

据我所知,最新的 Kubuntu (15.10) 使用 2.7.10。但假设您使用 14.04 LTS 中包含的 2.7.6:

Works with facebook for me too, so it's probably the page issue. What now?

那就要看网站了。此版本 Python 的典型问题是缺少对 Server Name Indication (SNI) 的支持仅添加到 Python 2.7.9。由于今天很多网站都需要 SNI(就像所有使用 Cloudflare Free SSL 的网站一样),我想这就是问题所在。

但是,还有其他可能性,例如 multiple trust path仅在 OpenSSL 1.0.2 中修复。或者只是缺少中间证书等。只有在您提供 URL 或您根据此信息和来自 SSLLabs 的分析自行分析情况时,才能获得更多信息和解决方法。 .

关于python - 使用 urllib 下载 HTTPS 页面,错误 :14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33972671/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com