2017-10-04 2 views
1
from lxml import html 
import requests 


url = "https://website.com/" 
page = requests.get(url) 
tree = html.fromstring(page.content) 
page.content 

->SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificat a échoué vérifier (_ssl.c: 748)SSL: certificat CERTIFICATE_VERIFY_FAILED verify n'a pas

Je lance ce script, mais je suis arrivé cette erreur. Comment puis-je le faire?

+0

[duplicata possible] (https://stackoverflow.com/questions/27835619/urllib-and- ssl-certificate-verify-failed-error) jetez un oeil à ceci pour des idées. – ivan7707

+2

Il serait plus facile de vous conseiller si vous pouviez indiquer si "website.com" était une véritable URL, ou juste un exemple, et quelles mesures vous avez prises pour vous assurer que son certificat est fiable. Vous devrez peut-être activer le suivi SSL. –

+0

Il s'agit d'une URL d'entreprise interne – Leo

Répondre

3

Depuis votre URL est « une URL interne de l'entreprise » (comme indiqué dans les commentaires), je suppose qu'il utilise un certificat auto-signé ou est délivré par un certificat CA auto-signé.

Si tel est effectivement le cas, vous avez deux options:

(1) indiquer le chemin à votre CA d'entreprise (y compris la chaîne complète des certificats intermédiaires, le cas échéant) à requests.get() call via verify argument:

requests.get('https://website.lo', verify='/path/to/certfile') 

ou (2), désactivez la vérification des certificats côté client tout à fait (mais méfiez-vous de tous les risques de sécurité cela implique, comme un simple man-in-the-middle attaques, etc):

requests.get('https://website.lo', verify=False) 

Fore exhaustivité, le paramètre verify pertinent est décrit dans requests.request() documents:

verify -- (optional) Either a boolean, in which case it controls whether we verify 
      the server's TLS certificate, or a string, in which case it must be a path 
      to a CA bundle to use. Defaults to True. 
+0

Où puis-je trouver mon certfile? – Leo

+0

'requests' avec par défaut [essayez d'utiliser le paquet' certifi'] (http://docs.python-requests.org/fr/master/user/advanced/#ca-certificates), mais si vous posez des questions sur CA Cert pour votre serveur d'entreprise interne, le mieux serait de demander à votre administrateur réseau de vous fournir leur certificat. – randomir

-1

utilisation ci-dessous le code sans SSL

from lxml import html 
import requests 


url = "http://website.com/" 
page = requests.get(url) 
tree = html.fromstring(page.content) 
page.content 
+0

la NSA va adorer votre solution! – rweisse