用node puppeteer实现网站登录代码解析

这次给大家带来用node puppeteer实现网站登录代码解析,用node puppeteer实现网站登录的注意事项有哪些,下面就是实战案例,一起来看一下。

puppeteer简介

puppeteer是Chrome团队开发的一个node库,可以通过api来控制浏览器的行为,比如点击,跳转,刷新,在控制台执行js脚本等等。有了这个神器,写个爬虫,自动签到,网页截图,生成pdf,自动化测试什么的,都不在话下。

puppeteer的简单例子

代码来自官网:

const puppeteer = require('puppeteer');(async () => { const browser = await puppeteer.launch();//打开浏览器 const page = await browser.newPage();//打开一个空白页 await page.goto('https://example.com');//在地址栏输入网址并等待加载 await page.screenshot({path: 'example.png'});//截个图  await browser.close();//关掉浏览器})();

登录后复制

阅读上述代码,我们可以发现,1,代码中每一步都是异步操作,2,每一步操作都对应实际使用浏览器的一个行为。理解这两点对使用这个库有很大帮助。另外,比较常用的两个对象就是browser和page对象,对象上有一堆用来操作两个对象的方法。接下来,我们就写一个登录网站的小demo。

没有验证码的网站

对于没有验证码的网站,基本上就是输入账号,输入密码,点击登录这三步,需要用到page对象的两个方法:type用来在输入框中输入信息,click用来点击登录。下面以登录豆瓣为例来举个例子:

const puppeteer = require('puppeteer');const account = `123456@qq.com`;const password = `123456`;(async () => { const browser = await puppeteer.launch();//打开浏览器 const page = await browser.newPage();//打开一个空白页 await page.goto('https://www.douban.com/');//打开豆瓣网站 await page.type('#form_email', account);   await page.type('#form_password', password); await page.click('.bn-submit'); await page.waitForNavigation({  waitUntil: 'load' });//等待页面加载出来,等同于window.onload await page.screenshot({path: 'example.png'});//截个图 await browser.close();//关掉浏览器})();

登录后复制

有人说,我怎么知道到底有没有登录成功呢,一种调试的办法就是使用screenshot,如果你看到的是一个验证码页面,说明没有登录成功,还有一种办法像下面这样:

const browser = await puppeteer.launch({headless: false});//打开有界面的浏览器

登录后复制

传入headless:false后会真的打开一个浏览器的界面,这样你就可以实时看到代码执行到什么地方了。接下来我们说说碰到验证码时怎么办。

有验证码的网站

用node puppeteer实现网站登录代码解析

碰到有验证码的网站,可以将headless设成false,借助界面输入验证码,同时监听页面加载事件,实现登录,代码如下:

... await page.waitForNavigation({  waitUntil: 'load' });//等待页面加载出来,等同于window.onload//代码中监听跳转事件if(page.url() === 'https://www.douban.com/accounts/login'){    //登录不成功  console.log('需要输入验证码');  //等待再一次跳转  while(true){    await page.waitForNavigation({      waitUntil: 'load'    })    console.log(page.url())    if(page.url() === 'https://www.douban.com/'){      console.log('登录成功');      break;    }  } }

登录后复制

整体思路就是写也个循环,不断监听页面跳转,直到浏览器登录成功后跳转到首页为止。

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

JS Promise案例代码解析

vue计算属性和监听器案例代码分析

vue按钮多次点击重复提交数据如何处理

以上就是用node puppeteer实现网站登录代码解析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2759590.html

(0)
上一篇 2025年3月8日 08:33:04
下一篇 2025年2月27日 22:54:55

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 怎样实现Vue微信项目按需授权登录

    这次给大家带来怎样实现Vue微信项目按需授权登录,实现Vue微信项目按需授权登录的注意事项有哪些,下面就是实战案例,一起来看一下。 项目采用Vue作为开发框架,用户浏览页面时有两种情况: 一种是需要用户先登录之后才能继续浏览; 另一种是用户…

    编程技术 2025年3月8日
    200
  • 如何让node中promise替代回调函数

    这次给大家带来如何让node中promise替代回调函数,如何让node中promise替代回调函数的注意事项有哪些,下面就是实战案例,一起来看一下。 在学习 Node.js 过程中接触到了如何使用 async 来控制并发(使用 async…

    编程技术 2025年3月8日
    200
  • 怎么使用node中async控制并发

    这次给大家带来怎么使用node中async控制并发,使用node中async控制并发的注意事项有哪些,下面就是实战案例,一起来看一下。 目标 建立一个 lesson5 项目,在其中编写代码。 代码的入口是 app.js,当调用 node a…

    2025年3月8日
    200
  • 用AJAX实现页面登陆以及注册用户名验证的简单实例

    下面我就为大家带来一篇用ajax实现页面登陆以及注册用户名验证的简单实例。现在就分享给大家,也给大家做个参考。 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交…

    编程技术 2025年3月8日
    200
  • 如何用node实现爬虫功能

    这次给大家带来如何用node实现爬虫功能,用node实现爬虫功能的注意事项有哪些,下面就是实战案例,一起来看一下。 node是服务器端的语言,所以可以像python一样对网站进行爬取,下面就使用node对博客园进行爬取,得到其中所有的章节信…

    2025年3月8日
    200
  • 怎样使linux后台运行node服务指令

    这次给大家带来,的注意事项有哪些,下面就是实战案例,一起来看一下。 启动node 服务时候发现 node servier.js跑起来之后,一旦断开连接,服务也就停了, 使用 nohup node servier.js & 就可以让代…

    编程技术 2025年3月8日
    200
  • linux后台运行node服务指令步骤方法

    这次给大家带来linux后台运行node服务指令步骤方法,linux后台运行node服务指令的linux有哪些,下面就是实战案例,一起来看一下。 启动node 服务时候发现 node servier.js跑起来之后,一旦断开连接,服务也就停…

    编程技术 2025年3月8日
    200
  • 如何使用node结合swig渲染摸板

    这次给大家带来如何使用node结合swig渲染摸板,使用node结合swig渲染摸板的注意事项有哪些,下面就是实战案例,一起来看一下。 首先当然是利用express框架在node后台上面搭建服务 var express = require(…

    2025年3月8日
    200
  • 怎么使用node实现基于token身份验证

    这次给大家带来怎么使用node实现基于token身份验证,使用node实现基于token身份验证的注意事项有哪些,下面就是实战案例,一起来看一下。 最近研究了下基于token的身份验证,并将这种机制整合在个人项目中。现在很多网站的认证方式都…

    编程技术 2025年3月8日
    200
  • 怎么实现微信小程序登录鉴权

    这次给大家带来怎么实现微信小程序登录鉴权,实现微信小程序登录鉴权的注意事项有哪些,下面就是实战案例,一起来看一下。 前言 为了方便小程序应用使用微信登录态进行授权登录,微信小程序提供了登录授权的开放接口。乍一看文档,感觉文档上讲的非常有道理…

    2025年3月8日
    200

发表回复

登录后才能评论