Cookie-Problem mit aiohttp

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
jonen
User
Beiträge: 2
Registriert: Samstag 15. August 2020, 20:36

Ich möchte einen Artikel von zeit.de mit aiohttp herunterladen, bekomme aber immer die Meldung, dass Cookies nicht aktiviert sind.

Wenn ich requests benutzte, funktioniert alles einwandfrei:

Code: Alles auswählen

import requests
url = 'https://www.zeit.de/news/2020-01/01/deutsche-handballer-starten-in-direkte-em-vorbereitung'
response = requests.get(url)
Mit aiohttp:

Code: Alles auswählen

import aiohttp
import asyncio

url = 'https://www.zeit.de/news/2020-01/01/deutsche-handballer-starten-in-direkte-em-vorbereitung'

async def main():
    async with aiohttp.ClientSession(cookie_jar=aiohttp.CookieJar()) as session:
        async with session.get(url) as resp:
            print(resp.status)
            print(await resp.text())

loop = asyncio.get_event_loop()
loop.run_until_complete(main())
bekomme ich zwar den Statuscode 200, aber die HTML-Seite enthält bloß folgende Meldung:
Um zeit.de nutzen zu können, müssen Cookies in Ihrem Browser aktiviert sein.
Nun sollte man doch so eine Fehlermeldung nur erhalten, wenn der Cookie in der GET-Anfrage im Header nicht definiert ist, allerdings ist er dort laut:

Code: Alles auswählen

resp.request_info.headers
eingetragen:

Code: Alles auswählen

<CIMultiDictProxy('Host': 'www.zeit.de', 'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'Python/3.7 aiohttp/3.6.2', 'Cookie': 'creid=1675121728160225997')>

Nun frage ich mich, wie das requests genau macht, weil wenn ich dort mit

Code: Alles auswählen

response.request.headers
den gesendet Header abfrage, bekomme ich einen Header ohne Cookie:

Code: Alles auswählen

{'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
Aber irgendwie schafft es requests, eine Abfrage so zu bauen, dass sie vom Server akzeptiert wird.

Hat jemand eine Idee, was ich hier übersehe?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Dein requests-Aufruf hast keine Cookies. Der aiohttp dagegen schon. Vielleicht liegt ja darin das Problem. Oder der User-Agent ist Schuld. Einfach mal den Header exakt weiter bei requests nachbauen.
jonen
User
Beiträge: 2
Registriert: Samstag 15. August 2020, 20:36

Danke für den Tipp, lag tatsächlich am User-Agent, wenn ich denn nämlich explizit als
User-Agent': 'python-requests/2.21.0
in aiohttp angebe, funktioniert es. Lag wohl am Server.

Vielen Dank!
Antworten