从PHP执行Puppeteer时出错
我有一个节点脚本,该脚本将网页转换为PDF文档.用户输入了一些内容,PHP构建了一个HTML页面,然后在节点脚本中使用该页面(运行Puppeteer,使用但是当我(node:14832) UnhandledPromiseRejectionWarning: Error: Failed to launch chrome! [0424/165455.239499:ERROR:icu_util.cc(133)] Invalid file descriptor to ICU data received. [0424/165455.239717:FATAL:content_main_delegate.cc(53)] Check failed: false. #0 0x55f27f255b0c base::debug::StackTrace::StackTrace() #1 0x55f27f26e780 logging::LogMessage::~LogMessage() #2 0x55f27d5f7
0 2023-06-02
编程技术问答社区
Headless Chrome(Puppeteer)-如何获得对文档节点元素的访问?
我正在使用 phantomjs 来解析一些内容,从中获取一些信息(Max Image例如,在页面上的尺寸).我已经面对这个问题 - 在我的功能中,在phantomjs运行,他们正在使用文档节点元素.因此,在Puppeteer中,据我了解,无法从Page.Evaluate和其他功能返回节点元素.那么,还有其他方法可以克服这个问题吗?也许我必须使用另一个库?谢谢! 解决方案 使用Puppeteer时有两个环境: node.js环境 页面环境 node.js环境建立在Google的Chrome V8 JavaScript引擎上. Chrome V8描述它与DOM的关系: JavaScript最常用于浏览器中的客户端脚本,例如用于操纵文档对象模型(DOM)对象. 但是,DOM通常不是由JavaScript引擎提供的,而是由浏览器提供的. v8也是如此 - Google Chrome提供了DOM.但是,V8确实提供了ECMA标准中指定的所有数据类型,运算符,对象和
0 2023-05-25
编程技术问答社区
如何避免在Puppeteer和Phantomjs上被检测为机器人?
Puppeteer和Phantomjs相似.我遇到的问题都是两者都发生的,而且代码也相似. 我想从网站上获取一些信息,这些信息需要身份验证才能查看这些信息.我什至无法访问主页,因为它被检测到"可疑活动",例如SS: https:https://I.imgur.com/p69oijo.png 我发现,当我使用名为 cookie 的标头对邮递员进行测试时,问题不会发生,并且它的cookie值在浏览器上捕获,但是该cookie一段时间后就到了.因此,我猜Puppeteer/Phantomjs都没有捕获cookie,因为此网站拒绝无头浏览器访问. 我该怎么办? // Simple Javascript example var page = require('webpage').create(); var url = 'https://www.expertflyer.com'; page.open(url, function (status) { if( stat
0 2023-05-25
编程技术问答社区
无头浏览器检测
您知道是否有任何WebApps/在线测试/在线防火墙试图检测用户是否使用Selenium/Puppeteer/Phantomjs或其他任何无头浏览器? 我已经创建了我的Puppeteer Online Crawler.我更改了许多不同的东西,例如window.navigator对象(用户代理,〜.webdriver等). 现在我想确保它是无法检测的. 解决方案 有一个>无头浏览器检测测试测试以下测试: 用户代理是否包含字符串"无头染色"? 是navigator.webdriver设置? 是window.chrome unset? 浏览器会跳过要求权限(如通知)? 浏览器插件不可用? 是navigator.languages unset? 如果您的浏览器用"是"回答了这些问题,那么您的测试未能通过.有关测试的更多信息,请查看此 post post ,这是对一篇名为后一篇文章的作者还发布了另一项测试其他网站进行的"软"测试可能包括鼠标运动,滚动行为,
2 2023-05-25
编程技术问答社区
使用Node.js的Puppeteer自动允许网络摄像头访问
我正在设置一个涉及启动网络摄像头视频会话的测试. 到目前为止,所有人都可以正常工作,并且不需要任何用户互动, 授予访问. 当我使用的第三方库时,请致电:navigator.mediaDevices.getUserMedia({audio: true, video: true}) 浏览器打开一个提示,要求用户允许访问. 我正在寻找的是一种无需用户互动而授予访问的方法. 我已经尝试了Puppeteer的page.on('dialog'...,但这并没有被召唤为网络摄像头访问提示. 请让我知道您是否有任何想法? 解决方案 Google Chrome具有启动选项--use-fake-ui-for-media-stream,该选项允许用户跳过GetuserMedia的提示. 您可以用下面的木偶将其设置. const puppeteer = require('puppeteer') ;(async () => { const browser =
0 2023-05-25
编程技术问答社区
类型错误: 方法Promise.prototype.then在不兼容的接收器Proxy上被调用。
要执行集成测试,我使用了jasmine和puppeteer,并且由于我通过了教育课程,因此,我决定使用JS代理来封装测试功能,但是当我进行测试时,我会遇到以下错误 TypeError: Method Promise.prototype.then called on incompatible receiver [object Object] 这是我的自定义类别,它将代表一个镀铬标签: const puppeteer = require('puppeteer'); class CustomPage{ static async build(){ const browser =await puppeteer.launch({headless:false}); const page = browser.newPage(); var customPage = new CustomPage(page); co
0 2023-05-23
编程技术问答社区
在puppeteer中滚动到一个div的底部不起作用
所以我试图在下图中刮擦所有音乐会: https://i.stack.imgur.com/7qimm.jpg 问题是列表仅显示前10个选项,直到您在该特定的div中向下滚动到底部为止,然后动态地呈现更多,直到没有更多结果为止.我尝试按照下面的链接的答案进行操作,但无法向下滚动以展示所有"音乐会": 如何用puppeteer在Div内滚动? 这是我的基本代码: const browser = await puppeteerExtra.launch({ args: [ '--no-sandbox' ]}); async function functionName() { const page = await browser.newPage(); await preparePageForTests(pa
0 2023-05-22
编程技术问答社区
如何用Puppeteer-Sharp在iframe内填写一个表单
我试图用Puppeteer Sharp刮擦TAOBAO网站. 这是代码: private static async Task SurfWithPuppeteer() { var options = new LaunchOptions{ Devtools = true }; Console.WriteLine("Downloading chromium"); await new BrowserFetcher().DownloadAsync(BrowserFetcher.DefaultRevision); Console.WriteLine("Navigating to Hacker News"); using (var browser = await Puppeteer.LaunchAsync(options)) using (var page = await brow
12 2023-05-22
编程技术问答社区
Puppeteer与Express Router Node JS的并行性。如何在保持并发性的同时在路由之间传递页面
app.post('/api/auth/check', async (req, res) => { try { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto( 'https://www.google.com' ); res.json({message: 'Success'}) } catch (e) { console.log(e); res.status(500).json({ message: 'Error' }); }}); app.post('/api/auth/register', async (req, res) => { console.log('register'); // Here i'm need to transfer the current user session (pag
0 2023-05-22
编程技术问答社区
Puppeteer中的头文件与浏览器中的不一样
我有这个基本帖子请求: (async () => { // Create browser instance, and give it a first tab const browser = await puppeteer.launch({headless: false}); const page = await browser.newPage(); // Allows you to intercept a request; must appear before // your first page.goto() await page.setRequestInterception(true); // Request intercept handler... will be triggered with // each page.goto() statement page.on('request', inte
6 2023-05-22
编程技术问答社区
Express/Puppeteer:从EJS模板生成PDF,然后发送为响应
带有木偶代码的用户路线: Router.get('/generate_invoice', (req, res) => { const userData = req.session.user; res.render("./patientpanel/invoice", { user: userData }); (async () => { // launch a new chrome instance const browser = await puppeteer.launch({ headless: true }); const page = await browser.newPage(); const filePathName = path.resolve(__dirname, '../views/patientpanel/invoice.ejs'
0 2023-05-22
编程技术问答社区
Schmooze:: 使用grover gem转换html2pdf时处理失败+。
respond_to do |format| format.html format.pdf do grover = Grover.new('http://localhost:3000/generate_report', format: 'A4') pdf = grover.to_pdf File.open(Rails.root.join('report.pdf'),'wb', encoding: 'ascii-8bit') { |f| f.write(pdf)} end end 我需要将我的HTML页面转换为PDF.但是我会得到一个" schmooze流程失败",并且系统在grover.to_pdf时悬挂.它在终端方面运行良好,但在我的铁路项目中效果不佳. 解决方案 听起来您的系统正在悬挂 当您在请求中内部并尝试击中generate_report端点时,
0 2023-05-22
编程技术问答社区
Puppeteer为PDF渲染自定义页眉页脚
我正在渲染网站的PDF.我想要第一页的不同标题和页脚,而其余页面则不同.有什么方法可以做到吗? const puppeteer = require('puppeteer'); (async() => { var t = Date.now(); console.log('Current time ' + t + ' msec'); const browser = await puppeteer.launch({executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', ignoreHTTPSErrors:true, headless:true, devtools:false}); const page = await browser.newPage(); await page.setViewport({width: 1920, height: 1080}); aw
8 2023-05-22
编程技术问答社区
生成PDF时,木偶不会加载本地存储的图像
我正在尝试在电子应用中使用木偶和车把生成PDF.但是这些图像未显示在.pdf文件中,我尝试使用无头模式进行调试,但没有找到任何有用的. 我的文件夹结构是: +-- pdf_template | +-- generatePDF.js | +-- template.html | +-- template.css | +-- logo.png | +-- bg.png generatepdf.js: try { (async () => { var dataBinding = { total: 123456, }; var templateHtml = fs.readFileSync( path.join( process.cwd(), '/app/pages/pdf_templat
2 2023-05-22
编程技术问答社区
木偶人等待,直到页面完全加载完毕
我正在努力从网页创建PDF. 我正在工作的应用程序是单页应用程序. 我在 https://githbithub.com/gogithub.com/googlome/googlechrome/puppeteer/sissues/puppeteer/issues/sissues/14112" https://googlechrome/1412" rel="noreferrer">/1412 但是它不起作用 const browser = await puppeteer.launch({ executablePath: 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe', ignoreHTTPSErrors: true, headless: true, devtools: false, args: ['--no-sandbox', '--di
6 2023-05-22
编程技术问答社区
来自缓冲区的斑点返回损坏的PDF
试图在firebase函数上使用uppeteer制作PDF:发送html摘要,恢复pdf. . 但是PDF被损坏.我认为,问题是返回文件/缓冲区. // Server: // setup const func = require('firebase-functions'); const pptr = require('puppeteer'); const opts = { memory: '1GB', regions: ['europe-west3'] }; const call = func.runWith(opts).https.onCall let browser = pptr.launch({ args: ['--no-sandbox'] }); // onCall exports.makePdf = call(async (data) => { // this works, does open the page testing with { headles
2 2023-05-22
编程技术问答社区
通过puppeteer生成的PDF在结尾处缺少内容
我试图通过将URL发送到木偶来生成PDF.我给出了特定的高度和宽度作为page.pdf方法的选项.我能够获得PDF的确切高度,但最后缺少一些内容.而且只有更高的高度PDF发生. 以下是我的代码: let pdf = {}; const puppeteerArguments = []; puppeteerArguments.push('--disable-web-security', '--allow-running-insecure-content', '--no-sandbox', '--disable-setuid-sandbox', '--disable-gpu', '--no-first-run', '--hide-scrollbars', '--disable-dev-shm-usage',
4 2023-05-22
编程技术问答社区
试图在用Puppeteer生成的PDF上隐藏第一个页脚/页眉
使用nodejs函数和Puppeteer的新元素.以前我正在使用wkhtmltopdf,但目前的选项非常差. 因此,我的想法是从HTML生成一个带有第一个封面页面的HTML(具有完整a4宽度/高度的图像),因为页脚是从index.js生成的,因此无法将其隐藏在第一个pdf. 的页面 //Imports const puppeteer = require('puppeteer'); //Open browser async function startBrowser() { const browser = await puppeteer.launch({headless: true, args:['--no-sandbox']}); const page = await browser.newPage(); return {browser, page}; } //Close browser async function closeBrowser(brows
4 2023-05-22
编程技术问答社区
将原始cookie转换为puppeteer所接受的cookie
我想通过Passport.js将Session通过. 我使用var cookies = req.cookies;以获取cookie值. i console. { 'connect.sid': 's:qX4ZrttrjydtrjkgsdghsdghrewynZj4Ew2OUh.tTSILkcvgsegsegsegsr99gmW5 0XLcJefM' } 我认为将这个价值传递给木偶一样容易. 但是puppeteer具有page.setCookie()函数,其格式是: page.setCookie(...cookies) ...cookies name required value required url domain path expires Unix time in seconds. httpOnly sec
6 2023-05-21
编程技术问答社区