Last active
April 6, 2021 10:05
-
-
Save linw1995/ccb0e1081ede453e629ac2fe8a8e60f4 to your computer and use it in GitHub Desktop.
Convert pyppeteer cookies to SimpleCookie
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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