龙空技术网

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

淡墨流年生活号 1194

前言:

而今朋友们对“图片验证码怎么测试”大概比较珍视,同学们都需要知道一些“图片验证码怎么测试”的相关文章。那么小编也在网摘上网罗了一些有关“图片验证码怎么测试””的相关内容,希望看官们能喜欢,看官们快快来学习一下吧!

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

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

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

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 = ';    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

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

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

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

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

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

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保存到本地,方便我们请求库进行请求,获取登录后页面信息,后面就可以进行数据的抓取了

标签: #图片验证码怎么测试