Cookie-Problem mit aiohttp
Verfasst: Samstag 15. August 2020, 20:58
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:
Mit aiohttp:
bekomme ich zwar den Statuscode 200, aber die HTML-Seite enthält bloß folgende Meldung:
eingetragen:
Nun frage ich mich, wie das requests genau macht, weil wenn ich dort mit
den gesendet Header abfrage, bekomme ich einen Header ohne Cookie:
Aber irgendwie schafft es requests, eine Abfrage so zu bauen, dass sie vom Server akzeptiert wird.
Hat jemand eine Idee, was ich hier übersehe?
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)
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())
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:Um zeit.de nutzen zu können, müssen Cookies in Ihrem Browser aktiviert sein.
Code: Alles auswählen
resp.request_info.headers
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
Code: Alles auswählen
{'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
Hat jemand eine Idee, was ich hier übersehe?