2016-04-05 33 views
1
import requests 

spiders = requests.get('https://en.wikipedia.org/w/api.php') 
print(spiders) 

için wikipedia API erişilemiyor: Hattanedeniyle yukarıdaki kod aşağıdaki hatayı alıyorum ile SSL sertifikası hatası

import requests 

spiders = requests.get('https://en.wikipedia.org/w/api.php',cert = 'c:\python\lib\site-packages\certifi\cacert.pem',verify = True) 
print(spiders) 

Traceback (most recent call last): 
    File "C:/Python/Files/3.py", line 3, in <module> 
    spiders = requests.get('https://en.wikipedia.org/w/api.php',cert = 'c:\python\lib\site-packages\certifi\cacert.pem',verify = True) 
    File "C:\Python\lib\site-packages\requests\api.py", line 67, in get 
    return request('get', url, params=params, **kwargs) 
    File "C:\Python\lib\site-packages\requests\api.py", line 53, in request 
    return session.request(method=method, url=url, **kwargs) 
    File "C:\Python\lib\site-packages\requests\sessions.py", line 468, in request 
    resp = self.send(prep, **send_kwargs) 
    File "C:\Python\lib\site-packages\requests\sessions.py", line 576, in send 
    r = adapter.send(request, **kwargs) 
    File "C:\Python\lib\site-packages\requests\adapters.py", line 447, in send 
    raise SSLError(e, request=request) 
requests.exceptions.SSLError: [SSL] PEM lib (_ssl.c:2824) 

: Hala bir hata alıyorum sertifikayı kullanma

Traceback (most recent call last): 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 554, in urlopen 
    self._prepare_proxy(conn) 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 750, in _prepare_proxy 
    conn.connect() 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\connection.py", line 252, in connect 
    ssl_version=resolved_ssl_version) 
    File "C:\Python\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 305, in ssl_wrap_socket 
    return context.wrap_socket(sock, server_hostname=server_hostname) 
    File "C:\Python\lib\ssl.py", line 376, in wrap_socket 
    _context=self) 

    File "C:\Python\lib\ssl.py", line 747, in __init__ 
    self.do_handshake() 
    File "C:\Python\lib\ssl.py", line 983, in do_handshake 
    self._sslobj.do_handshake() 
    File "C:\Python\lib\ssl.py", line 628, in do_handshake 
    self._sslobj.do_handshake() 
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:645) 

Bazı öğretici verbatim'i takip ettiğimde, eğitmene erişim sorunu yaşanırken bu sorunu yaşadım. Herhangi bir fikir?

+0

bir sertifika belirtme 'sertifika =' sunucu sertifikasını doğrulayarak ilgisi yoktur. Bu, kimlik doğrulama amacıyla uzak sunucuya bir SSL sertifikası * sunmanıza izin verir. – larsks

cevap

0

u böyle SSL göz ardı edebilirsiniz:

import requests 

spiders = requests.get('https://en.wikipedia.org/w/api.php',verify = False) 
print(spiders) 

başka bir çözüm:

from urllib.request import Request, urlopen 
rq = Request('https://en.wikipedia.org/w/api.php') 
response = urlopen(rq).read() 
+0

Bu işe yaradı. Ancak, hatanın neden İstekler için göründüğünü değil, urllib.request olduğunu anlamıyorum. Python 3.5 için urllib3 bozuk mu? – Zphinx677

+0

im hala python 3,2 (ve 2.6), ve urllib + urllib2 kullanarak benim için zor algılamıyor neden urllib3 yani "hassas" –

+0

Doğrulama yapıyorsanız İsteklerden uyarı alıyorsunuz = False. Uyarıları devre dışı bırakmak için: requests.packages.urllib3.disable_warnings() – RiTu

İlgili konular