Exercice Doing HTTP requests

Bonjour,
Je suis arrivé récemment sur le site hackinscience.org (via linuxfr), et depuis j’ai passé pas mal de temps sur ces exercices (j’aime bien le concept, et je m’entraîne beacoup mieux là qu’avec un livre).
Cependant, dans l’exercice cité en titre, j’ai le message d’erreur suivant :

    Traceback (most recent call last):
      File "solution.py", line 8, in <module>
        r = requests.get('https://api.github.com/users/python')
      File "/usr/lib/python3/dist-packages/requests/api.py", line 75, in get
        return request('get', url, params=params, **kwargs)
      File "/usr/lib/python3/dist-packages/requests/api.py", line 60, in request
        return session.request(method=method, url=url, **kwargs)
      File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
        resp = self.send(prep, **send_kwargs)
      File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
        r = adapter.send(request, **kwargs)
      File "/usr/lib/python3/dist-packages/requests/adapters.py", line 416, in send
        self.cert_verify(conn, request.url, verify, cert)
      File "/usr/lib/python3/dist-packages/requests/adapters.py", line 228, in cert_verify
        "invalid path: {}".format(cert_loc))
    OSError: Could not find a suitable TLS CA certificate bundle, invalid path: /etc/ssl/certs/ca-certificates.crt

Qui semble dire qu’il manque des certificats sur le serveur…
En essayant requests.get(https://.... verify = False), j’ai un autre message d’erreur.

Suis-je passé à côté de quelque chose ?

Merci d’avance.

Bonjour Lazaretto,

Oui c’est cool comme site - j’aime bien moi aussi. Il faut faire cette exercise sur ton propre poste et ensuite le poster sur hackinscience une fois que cela fonctionne car leur serveur n’a pas d’accès internet.

J’ai réussi l’exercise en faisant la requette chez moi et en entrant sur le site print("my_response")my_response est la réponse que j’avais recu chez moi.

est-ce clair?

Graham

Oui, merci pour les indications.

Du coup l’exercice est fait, mais à voir les réponses des autres, ça a dû fonctionner à un moment…
Je comprends qu’il y ait des contraintes de sécurité et firejail, mais du coup le site ne teste pas le " No internet connectivity.", et la donnée de l’exercice n’est pas très claire sur ce qu’il faut faire pour contourner le problème.
Serait-il possible de modifier le code de la correction pour “simuler” la connexion à github (ou un autre site), éventuellement en désactivant le chiffrement ?
Là je me retrouve à penser à un truc qui utiliserait SimpleHTTPServer en local, mais je suppose qu’avec firejail, c’est pas possible.
Bon, je retourne à bencode pour le moment…

1 « J'aime »

ping @mdk le coupable :stuck_out_tongue:

Merci @Mindiell pour le ping, j’étais caché en vacances þ

@lazaretto je viens de corriger le souci, j’ai ajouté /etc/ssl/ à la liste des dossiers visible depuis la sandbox de correction, ça fonctionnait avant en effet, ça à du tomber lors d’une mise à jour de requests ou de certifi …

Comme tu l’as compris, de toute façons, l’accès internet est coupé à la correction, donc il faut quand même except requests.exceptions.ConnectionError pour passer la validation qui ne peut tester que ça.