0
点赞
收藏
分享

微信扫一扫

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

之前用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识别图片验证码,自动化登录_全屏截图_02


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


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

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


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


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


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


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


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


举报

相关推荐

0 条评论