要想使用pyppeteer实现cookies登录,首先我们需要知道pypeteer中需要的cookies格式是怎样的。官方文档介绍是说要包含一个拥有以下字段的字典:
* ``name`` (str): **required** * ``value`` (str): **required** * ``url`` (str) * ``domain`` (str) * ``path`` (str) * ``expires`` (number): Unix time in seconds * ``httpOnly`` (bool) * ``secure`` (bool) * ``sameSite`` (str): ``'Strict'`` or ``'Lax'``
其实需要的就是一个字典列表,这个我们可以使用pyppeteer直接获取,使用pyppeteer打开一个网站,比如说这里打开我的博客,再使用page.cookies()方法获取到cookies,具体代码如下:
from pyppeteer import launch import asyncio async def main(): browser = await launch(headless=False, args=['--disable-infobars', '--no-sandbox', '--start-maximized'], slowMo=2, dumpio=True) page = await browser.newPage() await page.goto('https://liaojinhua.com/zb_system/login') # 现在暂停程序,我们手动输入密码与账号登录,然后按回车键获取cookies input() cookies=await page.cookies() asyncio.get_event_loop().run_until_complete(main())
获取到cookies后,我们输出一下看看,发现就是一个字典列表。现在就可以直接使用了,使用方法有两种:
第一种代码如下:
for cookie in cookies: await page.setCookie(cookie)
第二种代码如下:
await page.setCookie(*cookies)
最后完成代码如下:
from pyppeteer import launch import asyncio async def main(): browser = await launch(headless=False, args=['--disable-infobars', '--no-sandbox', '--start-maximized'], slowMo=2, dumpio=True) page = await browser.newPage() await page.setCookie(*cookies) await page.goto('https://liaojinhua.com/zb_system/login') asyncio.get_event_loop().run_until_complete(main())
评论