pyppeteer 模拟登陆淘宝

pyppeteer 文档地址
https://miyakogi.github.io/pyppeteer/index.html

import asyncio
from pyppeteer import launch

async def main():

    #初始化浏览器
    browser = await launch({'headless':False,'autoClose':False,'args':['--no-sandbox'],})
    #新建页面
    page = await browser.newPage()
    #设置高度和宽度
    await page.setViewport({'width': 1200, 'height': 800})
    #登录界面
    url = "https://login.taobao.com/member/login.jhtml"
    #打开淘宝登录界面
    await page.goto(url)

    #设置 webdriver为False 如果不设置淘宝会禁止你登录
    await page.evaluate('''
            () =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }
    ''')

    #判断是否有密码登录按钮
    while not await page.querySelector('.quick-form .login-links a.forget-pwd'):
        pass

    #点击密码登录
    await page.click('.quick-form .login-links a.forget-pwd')

    #设置登录密码
    await page.type('#TPL_username_1','***')
    await page.type('#TPL_password_1','***')

    #判断是否有登录按钮
    while not await page.querySelector('#J_SubmitStatic'):
        pass

    #点击登录按钮
    await page.click('#J_SubmitStatic')

    #停止1s
    await asyncio.sleep(1)

    #如果页面刷新,没有跳转到个人页面,是因为要拖拽验证码登录,这里要重新设置 webdriver为false
    await page.evaluate('''
                () =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }
        ''')

    #判断是不是个人页面
    if(await page.querySelector('#TPL_password_1')):

        #重新设置密码
        await page.type('#TPL_password_1', '*/***')

        #判断是否有拖拽验证码
        while not await page.querySelector('#nc_1_n1z'):
            pass

        #有就获取节点
        el = await page.querySelector('#nc_1_n1z')
        #获取节点属性
        box = await el.boundingBox()
        #把鼠标移动到,节点上
        await page.hover('#nc_1_n1z')
        #点击
        await page.mouse.down()
        #拖拽x,y值,拖到最后
        await page.mouse.move(box['x']+1000,box['y'])
        #松开鼠标
        await page.mouse.up()

        #点击登录这个时候,应该会跳转到个人中心页面
        await page.click('#J_SubmitStatic')



if __name__ == '__main__':
    asyncio.get_event_loop().run_until_complete(main())