2017-11-27 12 views
2

urllib.request SSL接続のPython:私はこのURLからデータを解析しようとしている3

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)) 

答えて

0

試してみてください。代わりに使用PROTOCOL_TLS:バージョン2.7.13で撤廃

ssl.PROTOCOL_TLS

From the docs on "PROTOCOL_SSLv23":

注:

高山のlinux、busyboxの最小限のビルドに、本命をインストールする必要があるように、CA証明書のバンドルがインストールされているようにしてください。また、場合によっては、PythonがSSLサポートでコンパイルされていない場合、そうする必要があるかもしれません。また、どのバージョンのOpenSSLがコンパイルされているかに応じて、SSLのどの機能を使用できるかが決まります。

chemeoサイトはTLSv1.3を使用していません...まだ実験中であり、この執筆時点では安全ではありません。彼らは現在、証明書として「letsencrypt」を使用して1.0,1.1,1.2をサポートしています。プロバイダ。

enter image description here

+0

ありがとうございます。 'ssl.PROTOCOL_TLS'は参照エラーを見つけることができません。PyCharmに表示される唯一のオプションは' ssl.PROTOCOL_SSLv23'です。さて、 'verify'オプションを' False'に設定して 'requests'パッケージを試してみましたが、これも失敗しました! あなたは、SSLサポートでPythonをコンパイルする方法について教えてください。私はこれをどうやってやるの? – LarsaSolidor

+0

@LarsaSolidorどのOS、どのopensslのバージョン、どのpythonのバージョン、あなたは誤ってca-certificatesを削除しましたか? 'sudo apt-get install --reinstall ca-certificates'? –

関連する問題