(仅在 NodeJs -> 服务器端)。
我正在做一些网页抓取,一些页面受到 cloudflare anti-ddos 页面的保护。我正在尝试绕过此页面。通过搜索,我发现了很多关于隐身方法或 reCapcha 的文章。但问题是,cloudflare 甚至没有尝试给我验证码,它一直卡在页面上(等待 5 秒),因为它显示为红色(打开 JavaScript 并重新加载)和(打开 COOKIES 并重新加载),由我的 javascript 似乎很活跃,因为我的程序在很多网站上运行并且它处理 javascript。
这是我的代码:
//vm = this;
vm.puppeteer.use(vm.StealthPlugin())
vm.puppeteer.use(vm.AdblockerPlugin({
blockTrackers: true
}))
let browser = await vm.puppeteer.launch({
headless: true
});
let browserPage = await browser.newPage();
await browserPage.goto(link, {
waitUntil: 'networkidle2',
timeout: 40 * 1000
});
await browserPage.waitForTimeout(20 * 1000);
let body = await browserPage.evaluate(() => {
return document.documentElement.outerHTML;
});
我还尝试删除stealthPlugin和AdblockerPlugin,但cloodflare一直告诉我没有javascript和cookie。
有人可以帮我吗?
设置您自己的 UserAgent 和 Accept-Language 标头应该有效,因为您的无头浏览器需要假装像一个正在浏览的真人。
您可以使用page.setExtraHTTPHeaders() https://github.com/puppeteer/puppeteer/blob/v10.2.0/docs/api.md#pagesetextrahttpheadersheaders and page.setUserAgent() https://github.com/puppeteer/puppeteer/blob/v10.2.0/docs/api.md#pagesetuseragentuseragent-useragentmetadata这样做。
await browserPage.setExtraHTTPHeaders({
'Accept-Language': 'en'
});
// You can use any UserAgent you want
await browserPage.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)