Python を使用してrequests.get
任意のサイトから情報を取得すると、エラーが発生します。
Traceback (most recent call last): File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 603, in urlopen
chunked=chunked) File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 344, in _make_request
self._validate_conn(conn) File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 843, in _validate_conn
conn.connect() File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 370, in connect
ssl_context=context) File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\ssl_.py", line 355, in ssl_wrap_socket
return context.wrap_socket(sock, server_hostname=server_hostname) File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 423, in wrap_socket
session=session File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 870, in _create
self.do_handshake() File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 1139, in do_handshake
self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 641, in urlopen
_stacktrace=sys.exc_info()[2]) File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\retry.py", line 399, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='e.mail.ru', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)')))
During handling of the above exception, another exception occurred:
Traceback (most recent call last): File "C:\Users\ADMIN\Desktop\test1.py", line 3, in <module>
r=requests.get("https://e.mail.ru") File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 75, in get
return request('get', url, params=params, **kwargs) File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\api.py", line 60, in request
return session.request(method=method, url=url, **kwargs) File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs) File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 646, in send
r = adapter.send(request, **kwargs) File "C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 514, in send
raise SSLError(e, request=request) requests.exceptions.SSLError: HTTPSConnectionPool(host='e.mail.ru', port=443): Max retries exceeded with url: / (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)')))
また、 を使用するとpip install
、同じエラーが発生します。
C:\WINDOWS\system32>cd C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\scripts
C:\Users\ADMIN\AppData\Local\Programs\Python\Python37\Scripts>pip install ssl
Collecting ssl
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)'))': /simple/ssl/
Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)'))': /simple/ssl/
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)'))': /simple/ssl/
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)'))': /simple/ssl/
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)'))': /simple/ssl/
Could not fetch URL https://pypi.org/simple/ssl/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/ssl/ (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)'))) - skipping
Could not find a version that satisfies the requirement ssl (from versions: )
No matching distribution found for ssl
You are using pip version 19.0.3, however version 19.2 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
サイトのURLを信頼できるものにしようとしました
pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org pip setuptools
しかし、何も得られません。
私は Windows 8、Python 3.7.4、pip 19.0.3 を使用しています。
SSL検証を無視できることは知っています
r = requests.get(url = URL, verify=False)
しかし、今はまだ使用できずpip install
、これらのエラーを常に無視する必要はありません。
答え1
コードに次の変更を加えると、動作するはずです:
from urllib3.exceptions import InsecureRequestWarning
.
.
.
requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
r = requests.get(url=URL, verify=False)
答え2
request.request('GET'...
の代わりにを使用しますrequest.get(...
。
システム時刻が正しいかどうかも確認できます:
date
設定が間違っている場合は、次の手順に従ってタイムゾーンと日付の自動同期を設定してください。
sudo apt-get install ntp ntpdate && service ntp stop
dpkg-reconfigure tzdata
ntpdate-debian
service ntp start
参照:https://serverfault.com/questions/7145/apt の取得後にキーの有効期限が切れたときにエラー メッセージが表示される場合、どうすればよいですか?
それは私にとってはうまくいきます。