繁体   English   中英

在带有 reCaptcha v2 的页面上触发“MessageChannel 未定义”

[英]'MessageChannel is undefined' triggered on pages with reCaptcha v2

我目前正在尝试抓取一些实施了 recaptcha 的网站,但是每当我加载页面的源代码时,我都会收到此错误: (node:15536) UnhandledPromiseRejectionWarning: ReferenceError: MessageChannel is not defined

我试图在这里实施修复: https : //github.com/jsdom/jsdom/issues/2448#issuecomment-536242756 ,但它仍然抛出错误。

这是我的代码:

const jsdom = require('jsdom');
const request = require('request');

const { JSDOM } = jsdom;

const url = 'https://www.google.com/recaptcha/api2/demo';

function getPage() {
    return new Promise(function(resolve, reject) {
    request.get(url, function(error, response, body) {
        if (error) {
            reject(error);
        }
        else {
            resolve(body);
        }
    }
    });
}

(async() => {
    const dom = new JSDOM(await getPage(), {
        url,
        contentType: 'text/html',
        runScripts: 'dangerously',
        resources: 'usable',
        pretendToBeVisual: true,
        beforeParse(window) {
            window.MessageChannel = require('worker_threads').MessageChannel;
        }
    });
})();

提前致谢,

互联

MessageChannel 在 iframe 上下文中不可用。

beforeParse函数不会在帧中运行: https : //github.com/jsdom/jsdom/issues/2920

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM