【发布时间】:2022-12-13 09:08:54
【问题描述】:
我正在使用 PHP 包装器puphpeteer,但最后是一样的。
我正在尝试获取 Youtube iframe 在特定站点上投放的 localSorage 变量。但是,当我尝试通过从 contentWindow 访问它来获取它的 localStorage 时,出现跨源错误:
Evaluation failed: DOMException: Blocked a frame with origin "https://www.fundacionhortensiaherrero.org" from accessing a cross-origin frame.
at __puppeteer_evaluation_script__:3:46 {"userId":3,"exception":"[object] (Nesk\\Rialto\\Exceptions\\Node\\FatalException(code: 0): Evaluation failed: DOMException: Blocked a frame with origin \"https://www.fundacionhortensiaherrero.org\" from accessing a cross-origin frame.
编码:
$youtube_iframes = $this->page->querySelectorAll('iframe[src*="youtube.com"]');
foreach ($youtube_iframes as $iframe){
$iframe->evaluate(JsFunction::createWithParameters(['el'])->body("el.setAttribute('src',el.getAttribute('src')+'&autoplay=1')"));
sleep(2);
Log::info($iframe->evaluate(JsFunction::createWithParameters(['el'])->body("return { ...el.contentWindow.localStorage }")));
}
如果我return { ...localStorage },我得到网站的localStorage,但不是 Youtube 的。
一定可以这样做吗?最后它是“我的浏览器”,我应该能够访问任何域的 localStorage。
你可以在这个 URL 上测试它:https://www.fundacionhortensiaherrero.org/valencia-ya-disfruta-la-exposicion-manolo-valdes/
【问题讨论】:
标签: puppeteer puphpeteer