Seite 1 von 1

requests.get / https / Zertifkate

Verfasst: Freitag 3. Juni 2022, 20:00
von Neu111
Guten Abend!
Ich startete den Versuch mittels "requests.get" eine https-Seite aufzurufen, jedoch wird die Anfrage mit einer Zertifkats-Fehlermeldung abgebrochen.
Über Google bin ich dann auf die Seite https://www.geeksforgeeks.org/ssl-certi ... -requests/ gestoßen.
Dort heißt es u.a., man könne die Zertifkatsprüfung mit dem Attribut "verify" abschalten:

Code: Alles auswählen

response = requests.get('https://testseite.com/', verify = False)
Und siehe da, es funktioniert.

"Leider" kommt bei jedem Aufruf der Warnhinweis, dass die Zertifkatsprüfungen ausdrücklich empfohlen werden (die Abfragen werden deshalb ausgebremst).

Meine Frage an Euch: wie ist eine saubere Abfrage inklusive Zertifkatsprüfung möglich, ohne das irgendwelche Fehlermeldungen erscheinen?

Auf der Seite von geeksforgeeks wird auf folgenden Code hingewiesen:

Code: Alles auswählen

response = requests.get('https://github.com', verify ='/path / to / certfile')
D.h. man soll den Pfad zum Zertifikat mitliefern.
Ich habe davon leider keine Ahnung.
Woher soll ich wissen, wo das Zertifikat liegt?

Re: requests.get / https / Zertifkate

Verfasst: Freitag 3. Juni 2022, 20:39
von sparrow
Darauf gibt es keine pauschale Antwort.
Es kommt darauf an, warum kein Zertifikat verifiziert werden kann.

Re: requests.get / https / Zertifkate

Verfasst: Montag 6. Juni 2022, 12:38
von August1328
Haben heutzutage nicht fast alle Webseiten https://...?`

Deshalb frage ich mich gerade, ob das Zertifikat das Problem ist oder meckert der Server, weil er über den user-agent die Abfrage als ein Skript erkennt, was vielleicht nicht gewünscht ist?

Ich frage unregelmäßig Daten bei der US Börsenaufsicht ab, unter sec.gov. Es hat mich einiges an Zeit gekostet, das fehlerfrei zum Laufen zu bekommen, weil die einen blocken, wenn man zu viele Anfragen stellt oder man ein unregistriertes Tool nutzt, z.B. ein Python Skript.

Es gibt mehrere Module / Wege, https Seiten mit Python abzurufen, seitdem ich requests.get mit einem festen user-agent nutze, klappt das wunderbar.

Der Code in Auszügen:

Code: Alles auswählen

from requests import get

AKTUELLERUSERAGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'

useragent = {'user-agent': AKTUELLERUSERAGENT}

try:
    antwort = get(seclink, headers=useragent)

except ConnectionError as con_error:
    print(con_error)

else:
    ... hier kommt HTML und Textbereinigung etc...
Den aktuellen user-agent von meinem Browser hole ich mir hier: http://wieistmeinuseragent.de/

Vielleicht hilft das weiter...

Gruß
Andy