puppeteer做页面监控

5 篇文章 0 订阅

为了监测web服务器有无异常,用puppeteer无头浏览器对几个页面做截图爬取然后通过企业微信系统消息发送到群里查看。

首先安装puppeteer,我大天朝用户需要设置国内源

npm config set puppeteer_download_host https://npm.taobao.org/mirrors

设置为淘宝镜像,然后安装。

启动一个无头浏览器

const browser = await puppeteer.launch({
        headless: true,
        args: ["--no-sandbox", "--disable-setuid-sandbox"],
    });

然后创建一个page,设置模拟器

const page = await browser.newPage();
await page.emulate(puppeteer.devices["iPhone 6"]);

如果有需要从cookie中获取的数据,手动设置一下

const cookie1 = {
        url: "url",
        path: "/",
        domain: "domain",
        name: "key1",
        value: "value1",
    };

const cookie2 = {
        url: "url",
        path: "/",
        domain: "domain",
        name: "key2",
        value: "value2",
    };

   
await page.setCookie(cookie1, cookie2);

如果有ua校验,设置ua

await page.setUserAgent("Mozilla/5.0 (Linux; Android 10; OXF-AN10 Build/HUAWEIOXF-AN10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.62 XWEB/2469 MMWEBSDK/200502 Mobile Safari/537.36 MMWEBID/939 MicroMessenger/7.0.15.1680(0x27000F3F) Process/appbrand0 WeChat/arm64 NetType/WIFI Language/zh_CN ABI/arm64 miniProgram");

 然后就跳转到页面

await page.goto(url, {waitUntil: "networkidle0",}).catch(e =>console.log('e==>'+e));

接下来就是截屏幕图片

await page.screenshot({ path: picname });

发企业微信的就省略了

然后就是关闭对应的链接

    await page.close();
    await browser.close();

 这样基本上是可以完成任务了

但有两个页面初始化的时候调的接口比较多,截图出现好几次loading的情况,需要等待dom完全加载好之后再截图

在page.goto 之前加了

await page.setDefaultNavigationTimeout(0);

 设置超时时间为0,但还是不管用

在page.goto之后设置

   await page.waitForSelector(dom);

dom就是在html文档上对应元素的id

又运行了一周多,没有再出现截有loading的图片了。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值