当我使用 Puppeteer 获取带有 iframe 的页面的 HTML 时,我遇到了
DOMException: Blocked a frame with origin [url] from accessing a cross-origin frame
我知道要绕过这个,我可以使用:
puppeteer.launch({
headless: true,
args: ['--disable-web-security']
});
但是除了使用
--disable-web-security
标志之外,还有其他方法可以绕过跨域问题吗?我看到网上有人敦促社区不要使用该标志,因为它很危险,因为它会暴露您的本地文件系统。
您需要使用 Chromium。这对我有用:
puppeteer.launch({
executablePath: 'chromium',
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-web-security',
'--disable-features=IsolateOrigins,site-per-process',
],
})
@Aleksey Razbakov answer 为我解决了以下问题:“沙箱属性同时具有允许脚本和允许相同来源的 iframe 可以逃脱沙箱。”