pyppeteer 极验(斗鱼直播 )滑动验证码【思路】

在这里插入图片描述

思路代码

注释的代码:使用page.frames 不知道怎么注入JS获取滑块验证图,所以注释
6.选择器用于选择鼠标指针浮动在上面的元素: 多次踩坑,如果没有这句,滑块就不能移动

@except_output(msg='斗鱼直播 - 异常')
    async def test(self):
        [page] = await self.browser.pages()
        await page.setViewport(viewport={'width': self.width, 'height': self.height})
        await asyncio.wait_for(page.goto('https://www.douyu.com/'), timeout=10)
        # 1.定位小人物图标
        await self.hover(page, '//*[@id="js-header"]/div/div/div[3]/div[7]/div/div/a/span')
        # 2.点击注册
        await self.click(page, '//*[@id="js-header"]/div/div/div[3]/div[7]/div/div/div/div/div/div[2]/a[2]')
        
        # frame = page.frames
        # register = frame[2]
        # print(register)
        # if register:
        #     await register.type('Input[placeholder="请输入手机号码"]', self.phone,
        #                         {'delay': self.geetest.input_time_random()})
        #     await register.type('Input[placeholder="输入密码"', random.sample('1234567890zyxwvutsrqponmlkjihgfedcba', 7),
        #                         {'delay': self.geetest.input_time_random()})
        #     await self.click(register, '//*[@id="loginbox"]/div[2]/div/form/div[4]/div/div/div/input[2]')  # 点击
        #     await register.hover(
        #         'body > div.geetest_panel.geetest_wind > div.geetest_panel_box > div.geetest_panel_next > div > div.geetest_wrap > div.geetest_slider.geetest_ready > div.geetest_slider_button')
        #     await self.jiyan(page, 'test', iframe=True)  # 获取并保存图片

        # 3.查找当前的注册面板对象
        iframe_element = await page.J('#login-passport-frame')
        if iframe_element:  # 存在的话 -> 进入
            # 4.选择面板对象内容框架
            iframe = await iframe_element.contentFrame()
            await iframe.type('Input[placeholder="请输入手机号码"]', self.phone,
                              {'delay': self.geetest.input_time_random()})
            await iframe.type('Input[placeholder="输入密码"', random.sample('1234567890zyxwvutsrqponmlkjihgfedcba', 7),
                              {'delay': self.geetest.input_time_random()})
            # 5.点击短信验证
            await self.click(iframe, '//*[@id="loginbox"]/div[2]/div/form/div[4]/div/div/div/input[2]')
            # 6.选择器用于选择鼠标指针浮动在上面的元素
            await iframe.hover(
                'body > div.geetest_panel.geetest_wind > div.geetest_panel_box > div.geetest_panel_next > div > div.geetest_wrap > div.geetest_slider.geetest_ready > div.geetest_slider_button')
            # 7.注入JS获取滑块验证图片,并获取滑块移动的距离
            await self.jiyan(page, iframe, 'test',
                             '/html/body/div[4]/div[2]/div[6]/div/div[1]/div[2]/div[2]')```

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷心兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值