FUNCTIONS_EXECUTE_FAIL" message: "The "original" argument must be of type function" requestId: "ea04fa07ef75d" 只要在云函数一引入Puppeteer
image.png 前言 Puppeteer是一个非常火爆的无头浏览器并在最近得到非常多的star。...主要功能是使用安装的Chromium启动一个浏览器来模拟用户操作,但是这个浏览器可以说是一次性的无法缓存信息,很多时候我们希望Puppeteer可以复用本地已启动的浏览器。...在查找多篇文章后总结出正确的使用方法: 使用 1.为了保证顺利链接我们需要设置Chrome浏览器的启动端口 右键快捷方式设置目标中的内容:在最后空格后添加 --remote-debugging-port...=9222 image.png 2.编写程序配置puppeteer配置 const axios = require('axios'); const puppeteer=require('puppeteer...await browser.disconnect() })() image.png 讲解 使用axios获取对应链接(http://localhost:9222/json/version)的通信配置传入puppeteer
puppeteer访问的页面存在跨域iframe时,会存在无法获取iframe内容的问题。...解决方法,puppeteer加上启动参数 args: [ '--disable-web-security', '--disable-features=IsolateOrigins...,site-per-process', // 很关键... ] 如: const browser = await puppeteer.launch({ args: [ '--disable-web-security
很早很早之前,前端就有了对 headless 浏览器的需求,最多的应用场景有两个 UI 自动化测试:摆脱手工浏览点击页面确认功能模式 爬虫:解决页面内容异步加载等问题 在Chrome headless...和Puppeteer出现之前,headless 浏览器有以下几种: PhantomJS, 基于 Webkit SlimerJS, 基于 Gecko HtmlUnit, 基于 Rhnio TrifleJS...Puppeteer能做什么? 你可以在浏览器中手动完成的大部分事情都可以使用Puppteer完成 比如: 生成页面的屏幕截图和PDF。 抓取SPA并生成预先呈现的内容(即“SSR”)。...使用最新的的JavaScript和浏览器功能,直接在最新版本的Chrome浏览器中运行测试。 捕获您网站的时间线跟踪,以帮助诊断性能问题。...iframe,然后根据 iframe 的名字精确获取某个想要的 iframe iframe.$('.srchsongst') 获取 iframe 中的某个元素 iframe.evaluate() 在浏览器中执行函数
最后,也是最重要的,无头浏览器并不是无敌的,反爬的一方不会乖乖束手就擒,你有张良计,他自然就有过强梯,反爬一方会通过某些方法检测出无头浏览器,然后把这些请求全部处理掉,某些网站你使用无头浏览器甚至无法打开首页...上段说的最后一点,也就是针对无头浏览器的反爬攻防,就是本文所要讨论的内容。PhantomJS和Selenium已经日薄西山,本文只研究后来居上的Puppeteer。 2....Puppeteer中,它的值为true,而在正常浏览器中,navigator里是没有这一属性的,是undefined。...Viewport 同样是早期版本中,puppeteer打开的无头浏览器会有一个默认的窗口大小,800600。...就如2.1的破盾部分,直接通过js注入修改了浏览器的特征属性,那么检测方法再怎么精妙,也无法逃过矛的攻击。
可以使用Puppeteer来自动化完成浏览器的操作,官方给出的一些使用场景如下: 生成页面PDF 抓取 SPA(单页应用)并生成预渲染内容(即“SSR”(服务器端渲染)) 自动提交表单,进行 UI 测试...Puppeteer使用DevTools协议与Chome(或Chromium)进行交互,而Selenium却使用WebDriver协议与浏览器进行交互。...如果本机已经安装了Chrome或Chromium浏览器,可以选择第一种方式安装Puppeteer即可。...{ // puppeteer默认打开的浏览器为无头模式 // const browser = await puppeteer.launch(); // 通过参数明确指定puppeteer...不以无头模式打开浏览器,并指定了Chrome浏览器可执行文件的路径 const browser = await puppeteer.launch({headless: true, executablePath
在 Playwright 之前,我一般会使用 Selenium 或者 Puppeteer 来进行浏览器自动化操作。...然而,Selenium 经常会有一些奇怪的 bug, Puppeteer 则是没有官方 Python 版,非官方版本也只有 async 版本,并且也是有一些奇怪的 bug....Playwright 是微软出品的浏览器自动化工具,代码质量应该是有足够保证的。而且它还官方支持同步版的 Python API, 同时支持三大浏览器,所以赶紧切换过来了。...安装 pip install playwright==1.8.0a1 # 很奇怪,必须指定版本,不指定会安装到一个古老的版本 python -m playwright install # 安装浏览器...Puppeteer 在打开浏览器之后就无法在更改代理了,对于爬虫类应用非常不友好,而 Playwright 可以通过 Context 设置代理,这样就非常轻量,不用为了切换代理而重启浏览器。
Puppeteer-py 作为一个 Python 库,提供了一种简单而强大的方法来控制无头浏览器,实现网页的自动化操作。...浏览器。...Puppeteer-py 允许 Python 开发者以编程方式与浏览器交互,执行各种自动化任务。3....以下是一些关键特性:●无头浏览器控制:无需打开浏览器界面即可控制浏览器。●生成截图和 PDF:轻松捕获网页的屏幕截图或生成 PDF 文件。●自动化表单提交:自动化填写和提交网页表单。...,我们关闭浏览器实例:完整代码过程如下所示:import asynciofrom puppeteer import Browser, BrowserContextproxyHost = "wdfddrrf"proxyPort
在安装puppeteer过程中遇到一些错误,记录一下 首先可能遇到node install.js错误,可以使用一下命令参数安装puppeteer npm i --save puppeteer --ignore-scripts...或者先执行一下命令再安装puppeteer npm config set unsafe-perm true npm i puppeteer 其次可能会遇到各种库没有安装的错误,比如libX11-xcb.so...ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget 还有sandbox 问题,可以尝试在无沙箱模式下运行puppeteer...const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox']}); npm config
代码 const puppeteer = require('puppeteer') const path = require('path') puppeteer.launch({ headless:...test.png 参考资料 https://zhaoqize.github.io/puppeteer-api-zh_CN/#?...product=Puppeteer&version=v2.0.0&show=api-elementhandleuploadfilefilepaths https://zhaoqize.github.io.../puppeteer-api-zh_CN/#?...product=Puppeteer&version=v2.0.0&show=api-pagewaitforselectorselector-options https://zhuanlan.zhihu.com
“ puppeteer recorder 是一款专门为puppeteer提供的插件,用来进行录制” 01—官网插件描述 Chrome extension for recording browser interaction...and generating Puppeteer scripts Puppeteer recorder is a Chrome extension that records your browser...interactions and generates a Puppeteer script....3.录制的脚本如下 const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch...执行同样的步骤看下生成的代码 生成代码如下: const puppeteer = require('puppeteer'); const browser = await puppeteer.launch
也不是全能的,比如在跨浏览器兼容方面就有所欠缺,目前只对 Firefox 做了实验性的支持,所以要对网站做浏览器兼容性测试还是得选择 Selenium/WebDriver 之类的工具,puppeteer...示例 3 - 在浏览器的上下文中执行 JS 代码 创建 get-dimensions.js const puppeteer = require("puppeteer"); (async () => {...关闭“无头”模式 - 看到浏览器的显示内容对调试很有帮助 const browser = await puppeteer.launch({ headless: false }); 2....打开“慢动作”模式 - 进一步看清浏览器的运行 const browser = await puppeteer.launch({ headless: false, slowMo: 250, //...在浏览器执行代码中使用 debugger 目前有两种执行上下文:运行测试代码的 node.js 上下文和运行被测试代码的浏览器上下文,我们可以使用 page.evaluate() 在浏览器上下文中插入
puppeteer https://pptr.dev/ 启动浏览器 const browser = await puppeteer.launch({ headless: true
但是如果定位器 API 无法满足时仍可以使用低级别的 API,如:page.waitForSelector() 或 ElementHandle。...指定浏览器版本号,默认值为当前 Puppeteer 内置的浏览器版本号 cacheDirectory string PUPPETEER_CACHE_DIR 指定 Puppeteer 使用的缓存目录,默认通过...指定浏览器产品,默认为 chrome 浏览器 downloadBaseUrl string PUPPETEER_DOWNLOAD_BASE_URL 指定下载浏览器的前缀地址,不同的浏览器产品对应的下载路径不同...; 启用浏览器调试:调试时会自动启动开发者工具; 打印浏览器日志:启用后可以接管浏览器意外崩溃或无法正常启动时的日志信息。...文档显示目前尚无法测试扩展程序的内容脚本。
记录一下这次用docker遇到的一些问题 先提供一个我用的包含puppeteer的docker镜像 puppeteer可以使用Network.emulateNetworkConditions和Emulation.setCPUThrottlingRate...在这里,我主要是利用puppeteer执行一段脚本,然后再从docker容器中,向宿主机post结果回去。...= require('puppeteer'); const fs = require('fs'); (async () => { const browser = await puppeteer.launch...网站性能测试利器:Puppeteer trace.json如何使用 trace.json另一个issue 关于docker stackoverflow名称切换 案例 官方更新历史 官方名称更换历史...= require('puppeteer'); const start = async () => { const browser = await puppeteer.launch({
今天说一说ie浏览器提示无法打开搜索页_谷歌浏览器搜索显示无法访问此网站,希望能够帮助大家进步!!!...经过查询资料和测试发现,这个问题的正确解决办法有两个 1、如果安装了IE8等古老浏览器 可以在IE浏览器Internet设置里面,高级里面 增加浏览器对TLS 1.1 1.2的支持,这样360浏览器兼容模式就可以访问到仅仅支持...360浏览器对这种要求加密版本高的网站无法访问时候提示信息不太明确。 image.png 把TLS 1.1 和1.2 勾选上。...这可以让所有用户的360浏览器无法访问问题得到解决。建议选这个方法。...网站无法访问_百度知道
1、launch([options]) options列表详解 options 在浏览器上设置的一组可配置选项。...headless 是否以 无头模式 运行浏览器。默认是 true,除非 devtools 选项是 true。...args > 传递给浏览器实例的其他参数。 这些参数可以参考 这里。...handleSIGINT Ctrl-C 关闭浏览器进程。默认是 true。 handleSIGTERM 关闭 SIGTERM 上的浏览器进程。...handleSIGHUP 关闭 SIGHUP 上的浏览器进程。默认是 true. timeout 等待浏览器实例启动的最长时间(以毫秒为单位)。
以下片段仅收集一些简单的介绍以及一些例子,具体使用时,可以在官网进行更详细的查询 简单入门介绍 Puppeteer 中的 API 分层结构基本和浏览器保持一致,下面对常使用到的几个类介绍一下: Browser...通过该该实例可以实现对元素的点击,填写表单等行为,我们可以通过选择器,xPath 等来获取对应的元素 JsHandle:对应 DOM 中的 javascript 对象,ElementHandle 继承于 JsHandle,由于我们无法直接操作...启动 Chrome (async () => { const browser = await puppeteer.launch({ headless: false, //有浏览器界面启动...每次都要重新启动一个 Chrome 进程,启动平均耗时 100 到 150 ms,性能欠佳 puppeteer.connect 可以实现对于同一个 Chrome 实例的共用,减少启动关闭浏览器的时间消耗...增多到浏览器卡到无法运行,所以我在爬虫代码里加了删除无用 iframe 的脚本: (async () => { const browser = await puppeteer.launch()
Deno 牌 Puppeteer,真香!...又双叒叕一堆 deno 的插件开源了,这次他们将目光转向了 puppeteer,deno-puppeteer、puppeteer_deno、deno-puppeteer-adapter…… 基本都是最近一个月诞生的...puppetter-deno 从截图说起 deno puppetter puppeteer是一个Node库,它提供了高级API来通过DevTools协议控制Chrome或Chromium,puppeteer...puppeteer常常被用来生成页面的屏幕截图和PDF、实现SSR、自动化测试等等,在业界也有不少企业级的运用,比如有赞商城前端团队使用puppeteer搭建统一海报渲染服务,TCB 的云函数也支持 puppeteer...在Mac上,一小段代码就实现了截取掘金首屏: // mod.ts // 引入 puppeteer import puppeteer from 'https://deno.land/x/pptr/mod.ts
其核心优势有: 支持标签 富文本显示 全球化支持 可自定义配置与主题样式 puppeteer/puppeteer[5] Stars: 83.8k License: Apache-2.0 Puppeteer...以下是 Puppeteer 的主要功能: 生成页面的截图和 PDF。 爬取单页应用程序 (SPA) 并生成预渲染内容 (即服务器端渲染)。 自动化表单提交、UI 测试、键盘输入等操作。...使用最新的 JavaScript 和浏览器特性创建自动化测试环境。 捕获网站的时间线跟踪信息,帮助诊断性能问题。 测试 Chrome 扩展程序。 提供简洁易用且强大灵活的 API 接口。...practical-tutorials/project-based-learning [4] microsoft/terminal: https://github.com/microsoft/terminal [5] puppeteer.../puppeteer: https://github.com/puppeteer/puppeteer [6] pallets/flask: https://github.com/pallets/flask
领取专属 10元无门槛券
手把手带您无忧上云