我正在try 拍摄第https://przegladarka-ekw.ms.gov.pl/eukw_prz/KsiegiWieczyste/wyszukiwanieKW页的屏幕截图,但我只收到我的请求被拒绝的消息.

我使用的代码如下

const puppeteer = require('puppeteer');         // Require Puppeteer module 
const url = "https://przegladarka-ekw.ms.gov.pl/eukw_prz/KsiegiWieczyste/wyszukiwanieKW";           // Set website you want to screenshot
const Screenshot = async () => {                // Define Screenshot function
   const browser = await puppeteer.launch({headless: false, slowMo: 250});    // Launch a "browser"
   const page = await browser.newPage();        // Open a new page
   await page.goto(url);                        // Go to the website

   await page.screenshot({                      // Screenshot the website using defined options
    path: "./screenshot.png",                   // Save the screenshot in current directory
    fullPage: true                              // take a fullpage screenshot
  });
  await page.close();                           // Close the website
  await browser.close();                        // Close the browser
}
Screenshot();                                   // Call the Screenshot function

在正常浏览器中,页面是空白的,几秒钟后刷新,然后正常显示,所以我正在try 所有重定向,但它不起作用

const puppeteer = require('puppeteer');         // Require Puppeteer module 
const url = "https://przegladarka-ekw.ms.gov.pl/eukw_prz/KsiegiWieczyste/wyszukiwanieKW";           // Set website you want to screenshot
const Screenshot = async () => {                // Define Screenshot function
   const browser = await puppeteer.launch({headless: false, slowMo: 250});    // Launch a "browser"
   const page = await browser.newPage();        // Open a new page
   await page.goto(url);                        // Go to the website

   page.on('console', msg => console.log('PAGE LOG:', msg.text()));
   await page.evaluate(() => console.log(`url is ${location.href}`));

   
    await page.waitForSelector('#numerKsiegiWieczystej', { visible: true, timeout: 0 });
   await page.screenshot({                      // Screenshot the website using defined options
    path: "./screenshot.png",                   // Save the screenshot in current directory
    fullPage: true                              // take a fullpage screenshot
  });
  await page.close();                           // Close the website
  await browser.close();                        // Close the browser
}
Screenshot();                                   // Call the Screenshot function

推荐答案

该页面有一个机器人检测脚本window["bobcmn"],因此将这些脚本添加到您的Package.json中:

"puppeteer-extra": "^3.3.6",
"puppeteer-extra-plugin-stealth": "^2.11.2",

那么截图的代码将是:


const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

let browser;
(async () => {
const browser = await puppeteer.launch({headless: true});
const page = await browser.newPage();
let url = 'https://przegladarka-ekw.ms.gov.pl/eukw_prz/KsiegiWieczyste/wyszukiwanieKW';

async function screenshot(url) {

    await page.goto(url,{ waitUntil: 'networkidle2', timeout:60000});
    await page.waitForSelector('div.content');
    await page.screenshot({path : "./screenshot.png", fullPage: true});

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

await screenshot(url);

})().catch(err => console.error(err)).finally(() => browser ?. close());

Node.js相关问答推荐

Stripe webhook无法访问Express请求原始正文

如何在Angular jest测试中调用Nodejs的垃圾收集? node v20的测试速度慢且内存泄漏

用于SLACK命令返回json而不是文本的AWS lambda函数

Express Web 服务器部署到 prod 但 GET 返回超时错误

Redis Typescript 删除方法类型转换

使用正则表达式查找文档,但输入是数组

Electron 模板(Typescript + Webpack)中的这个 Electron Forge ERROR 是什么?

在 Atlas 触发器(Node JS)中正确初始化 Firebase 管理 SDK

用户通过 oauth2 twitter 授权或通过Passport discord后如何重定向到 React/Vue 路由?

TypeError:changeChecked 不是函数

`npm install` 以Killed结尾

如何在 Nest.js 中使用查询参数?

使用 node.js 执行一个 exe 文件

如何在 NodeJs 中下载和解压缩内存中的 zip 文件?

如何在 MongoDB 上只收听 localhost

nodejs - 如何读取和输出 jpg 图像?

使用 node 的内置调试器判断变量?

在 react-router v4 中使用 React IndexRoute

nodejs:Ajax 与 Socket.IO,优缺点

如何让 Mocha 加载定义全局挂钩或实用程序的 helper.js 文件?