urllib.request SSL连接Python 3

时间:2017-11-27 17:34:05

标签: python python-3.x ssl web-scraping urllib2

我试图解析此网址中的数据:

https://www.chemeo.com/search?q=show%3Ahfus+tf%3A275%3B283

但我认为这是失败的,因为该网站使用SSL TLS 1.3。如何在下面启用我的Python脚本,以便在urllib.request中使用SSL进行连接?

我尝试过使用SSL上下文,但这似乎不起作用。

这是我的Python 3.6代码:

import urllib.request
import ssl
from bs4 import BeautifulSoup

scontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23)
chemeo_search_url = "https://www.chemeo.com/search?q=show%3Ahfus+tf%3A275%3B283"

print(chemeo_search_url)

with urllib.request.urlopen(chemeo_search_url, context=scontext) as f:
    print(f.read(200))

1 个答案:

答案 0 :(得分:0)

尝试:

ssl.PROTOCOL_TLS

From the docs on "PROTOCOL_SSLv23":

  

自版本2.7.13后不推荐使用:改为使用PROTOCOL_TLS。

注意:

确保安装了CA证书捆绑包,例如在最低版本的alpine linux,busybox上,必须安装证书。有时候如果没有使用SSL支持编译python,可能有必要这样做。此外,根据已编译的OpenSSL版本,还将确定SSL的哪些功能可用。

另请注意,chemeo网站没有使用TLSv1.3 ...它仍然是实验性的,并且在写这篇文章的时候并不是那么安全,它们目前支持使用" letsencrypt& #34;作为他们的证书提供者。

enter image description here