<返回更多

pyppeteer识别图片验证码,自动化登录

2022-03-15    淡墨流年pyseo
加入收藏

之前用selenium进行图片验证码识别时,核心逻辑是首先获取浏览器全屏截图,再对验证码元素进行坐标定位,最后利用定位对浏览器全屏进行截图,想想还是挺复杂的,这次用pyppeteer库进行识别一下。相对selenium识别相对方便很多。

举一个例子,比如识别这张登录验证码,再到平台自动打码,最后点击自动登录获取登录cookies。

 

pyppeteer识别图片验证码,自动化登录

 

接下来,在代码中先初始化对象

async def init():
    global page
    browser = await launch(**KW_ARGS)
    page = (await browser.pages())[-1]
    await page.setViewport({'width':WINDOW_WIDTH,'height':WINDOW_HEIGHT})

async def openWeb():
    url = 'http://xxxx.com/User/Login'
    await page.goto(url)
    await page.waitForSelector('#username',options={'timeout':TIMES_OUT*1000})
    await page.evaluate("document.body.style.zoom='0.8'")
    # await page.waitFor(TIMES_OUT*1000)

获取验证码图片id

pyppeteer识别图片验证码,自动化登录

 

对验证码图片进行截屏保存

async def get_screen_shot():
    element = await page.waitForSelector('#Verify')
    await element.screenshot(path='screen.png')

查看验证码图片,发现已经将验证码图片保存本地了。

pyppeteer识别图片验证码,自动化登录

 

后面调用第三方打码平台,对图片进行识别就可以了

pyppeteer识别图片验证码,自动化登录

 

拿到识别的代码,接下来我们模拟输入账号信息,点击登录就可以了

async def loging():
    await page.evaluate("document.body.style.zoom='1'")
    await page.type('#username', USER, {'delay': 100})
    await page.type('#password', PASS, {'delay': 100})
    await get_code()

    await page.waitFor(3 * 1000)

登录成功后,获取cookies,将cookies保存到本地,方便我们请求库进行请求,获取登录后页面信息,后面就可以进行数据的抓取了

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>