Skip to content

Instantly share code, notes, and snippets.

@linw1995
Last active April 6, 2021 10:05
Show Gist options
  • Select an option

  • Save linw1995/ccb0e1081ede453e629ac2fe8a8e60f4 to your computer and use it in GitHub Desktop.

Select an option

Save linw1995/ccb0e1081ede453e629ac2fe8a8e60f4 to your computer and use it in GitHub Desktop.
Convert pyppeteer cookies to SimpleCookie
import logging
from http.cookies import CookieError, Morsel, SimpleCookie
from pyppeteer.page import Page
logger = logging.getLogger(__name__)
PYPPETEER_2_MORSEL = {"httpOnly": "httponly", "sameSite": "samesite"}
async def page_cookies(page: Page) -> SimpleCookie:
raw_cookies = await page.cookies()
cookies: SimpleCookie = SimpleCookie()
for raw_cookie in raw_cookies:
name = raw_cookie["name"]
try:
cookies[name] = raw_cookie["value"]
except CookieError:
logger.warning("get invalid name %r", raw_cookie)
continue
m: Morsel = cookies[name]
for key, value in raw_cookie.items():
if key in ("name", "value"):
continue
if key in PYPPETEER_2_MORSEL:
key = PYPPETEER_2_MORSEL[key]
if key in ("expires", "size", "session"):
continue
try:
m.update({key: value})
except CookieError:
logger.warning("get invalid attribute %r in %r", key, raw_cookie)
continue
return cookies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment