首页 > 其他分享 >puppeteer localstorage 处理简单说明

puppeteer localstorage 处理简单说明

时间:2024-05-18 22:19:08浏览次数:24  
标签:browserless await puppeteer nginx localstorage 简单 page

puppeteer 对于cookie 以及localstorage 的控制实际上还是比较常见的需求,现在主流web 开发都比较喜欢使用localstorage 进行一些数据的额存储,以下是关于localstorage 处理的一个简单演示

环境准备

基于了browserless(使用了v2版本,注意browserless v1与v2 是有差异的,目前测试chrome的,chromium 的与v1 兼容比较好)

  • docker-compose
    一个browserless服务,一个基于nginx 的web server
version: "3"
services:
  nginx:
    image: nginx:alpine
    volumes:
      - ./index.html:/usr/share/nginx/html/index.html
    ports:
      - "80:80"
  browser:
    image: ghcr.io/browserless/chrome:latest
    ports:
      - "3000:3000"

测试

  • nginx index.html
    一个简单的静态文件,进行localstorage 操作
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>local storage teset</title>
     <script >
 
        function demo(){
            let local_name = localStorage.getItem("name");
            alert(local_name);
        }
 
     </script>
</head>
<body>
 
  <div> 
      <input type="button" value="set" id="set"  onclick="demo()"/>
  </div>
 
</body>
</html>
  • puppeteer 进行localstorage 操作
    app.js
const puppeteer = require("puppeteer-core");
(async () => {
  const browser = await puppeteer.connect({
    browserWSEndpoint: "ws://localhost:3000/chrome",
  });
  const page = await browser.newPage();
  await page.goto("http://nginx", { waitUntil: "networkidle2" });
// 通过page.evaluate进行localStorage 设置
  await page.evaluate(() => {
    localStorage.setItem("name", "demoapp");
  });
 // 通过page.evaluate进行localStorage 获取
  let info = await page.evaluate(() => {
    return localStorage.getItem("name");
  });
  console.log(info);
  await page.close();
  await browser.close();
})();

说明

以上是比较简单的测试,实际上目前通过对于v2版本browserless的测试,比v1是有不少性能的提升,整体处理处理快了不少(也可能是browserless内部浏览器版本的升级引起的)

参考资料

https://github.com/rongfengliang/puppeteer-localstorage-learning/tree/main
https://www.checklyhq.com/learn/headless/managing-cookies/

标签:browserless,await,puppeteer,nginx,localstorage,简单,page
From: https://www.cnblogs.com/rongfengliang/p/18195200

相关文章

  • SimCLR: 一种视觉表征对比学习的简单框架《A Simple Framework for Contrastive Learn
    现在是2024年5月18日,好久没好好地看论文了,最近在学在写代码+各种乱七八糟的事情,感觉要和学术前沿脱轨了(虽然本身也没在轨道上,太菜了),今天把师兄推荐的一个框架的论文看看(视觉CV领域的)。20:31,正经的把这篇论文看完。论文:ASimpleFrameworkforContrastiveLearningofVisua......
  • 使用puppeteer url转换pdf中文不显示
    本来正在优化一个url转pdf的node服务,项目是使用puppeteer进行转换。功能优化提测后,发现转换后的pdf中文都不显示了。而本身这次优化没有涉及到转换本身相关的内容,这就很奇怪,而且本地转换都很正常。一般中文不显示,很可能是缺少中文字体导致的,于是看了项目中的Dockerfil......
  • 一文带你简单入门了解设计模式
    什么是设计模式设计模式是在软件开发中,经过实践总结出来的可重复使用的、针对特定问题的解决方案的模板。它对软件设计中常见的问题进行了抽象和概括,提供了一种标准化的设计思路和方法,以提高软件的质量、可维护性、可扩展性和可复用性。简单来说,设计模式是一种编程中的经验总结和......
  • 【Delphi 开箱即用 1】简单实现拖拽文件到窗口
    当今,大多数个人小程序都普遍具备拖拽功能,因为拖拽操作极其便捷。毕竟,相比于传统的浏览文件夹方式打开目标文件,拖拽操作简直是一种解放。在这里,我们无需依赖任何第三方控件,单纯通过代码实现拖拽功能。目录1.最终效果图2.部分核心代码3.完整Demo源码下载1.最终效果图2.部分......
  • Operating System(nanjin)-1 简单介绍
    介绍三个主要线索:硬件软件操作系统管道---将一个程序的输出作为另一个程序的输入程序角度的操作系统helloworldc文件gcc--verbosehello.c-static可以查看很多信息如include在哪里。我们只进行编译gcc-chello.c--得到hello.oobjdump-dhello.o查看......
  • AnaTraf 网络流量监控,排除故障从未如此简单
    网络是现代企业的命脉,一旦出现故障,可能会带来巨大的经济损失。然而,网络问题通常难以定位和解决。传统的网络管理工具往往无法提供足够的网络可见性,导致故障排查效率低下。这就是为什么你需要一款专业的网络流量分析工具——AnaTraf。AnaTraf网络流量探针,全方位网络可视化A......
  • 5分钟学设计模式:工厂方法,让你的代码像搭积木一样简单!
    大家好,我是知微。在上一次的美食街之旅中,我们探讨了简单工厂模式。今天,让我们继续在美食街的夜色中,探索工厂方法模式的奥秘。第一幕:美食街的繁华美食街上,小吃摊的生意越来越火,摊主们为了满足顾客的多样化需求,开始提供更多种类的小吃。顾客(你):老板,听说你们这除了煎饼果子,还有其......
  • hive写入star,csv格式的streamload-简单版
    hive写入star,csv格式的streamload注意字符串中的转移字符直接拼接\n而要显示\\是非转义字符publicclassGcyDataTrans{privatestaticStringSTARROCKS_HOST="IP";privatestaticStringSTARROCKS_HTTP_PORT="8030";privatestaticStringSTARROCKS_DB......
  • 如何将pdf转换成ppt?这3种方法简单实用!
    PDF是一种常见的文档格式,而PPT则是一种常见的演示文稿格式。有时候,我们需要将PDF文件转换成PPT格式,以便在演示或展示中使用。下面,介绍pdf怎么转换成ppt的3种方法。一、使用在线转换工具这种方法是最简单、最快捷的方式之一。有很多在线工具都可以免费将PDF转成PPT,例如smallpdf中......
  • 超实用又简单的像素图转矢量图方法
    今天发现了一个超级牛的像素图转矢量图方法,觉得很有必要分享给大家!随着AIGC的发展,现在很多很厉害的AI工具如雨后春笋一般涌现,今天被网友疯狂安利了这款超棒的AI工具网站: 赶紧打开网站看了看,好家伙,79.99港币一个月!!! 看到这个价格以后,我连尝试的欲望都没有了!因为我刚好就......