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

【pyppeteer识别图片验证码,自动化登录】之前用selenium进行图片验证码识别时 , 核心逻辑是首先获取浏览器全屏截图 , 再对验证码元素进行坐标定位 , 最后利用定位对浏览器全屏进行截图 , 想想还是挺复杂的 , 这次用pyppeteer库进行识别一下 。相对selenium识别相对方便很多 。
举一个例子 , 比如识别这张登录验证码 , 再到平台自动打码 , 最后点击自动登录获取登录cookies 。
 

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

文章插图
 
接下来 , 在代码中先初始化对象
async def init():global pagebrowser = 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保存到本地 , 方便我们请求库进行请求 , 获取登录后页面信息 , 后面就可以进行数据的抓取了




    推荐阅读