提问人:Thomas J. 提问时间:7/26/2023 更新时间:7/31/2023 访问量:63
Puppeteer Chromium 动态 JS 内容
puppeteer chromium dynamic js content
问:
试图通过 lambda 抓取网站。它加载精细,加载铬和木偶师。
但是,每当应该通过第三方 JS 脚本加载其他内容时。例如,插件将广告呈现给由输入类型触发的 Web 内容中的广告。假设行为是——example.js
<div class="advertisments"></div>
- 用户在输入中键入 2 个字母“re”。
example.js
将某些广告加载到 div。.advertisments
出于某种原因,我的铬要么不允许这样的事情,要么只是忽略它。 我的工作流程是
const page = await pupBrowser.newPage()
page.goto('example.com', { waitUntil: 'networkidle2'})
const input = await page.$('.someInput')
await input.type('re')
await delay(2000ms)
await page.waitForElement('.advertisments')
出于某种原因,我的广告在 lambda puppeteer chromium 上是空的,在本地 chrome 上是空的。
我的论点是:
[
'--allow-running-insecure-content',
'--autoplay-policy=user-gesture-required',
'--disable-background-timer-throttling',
'--disable-component-update',
'--disable-domain-reliability',
'--disable-features=AudioServiceOutOfProcess,IsolateOrigins,site-per-process',
'--disable-ipc-flooding-protection',
'--disable-print-preview',
'--disable-dev-shm-usage',
'--disable-setuid-sandbox',
'--disable-site-isolation-trials',
'--disable-speech-api',
'--disable-web-security',
'--disk-cache-size=33554432',
'--enable-features=SharedArrayBuffer',
'--hide-scrollbars',
'--ignore-gpu-blocklist',
'--in-process-gpu',
'--mute-audio',
'--no-default-browser-check',
'--no-first-run',
'--no-pings',
'--no-sandbox',
'--no-zygote',
'--use-gl=angle',
'--use-angle=swiftshader',
'--window-size=1920,1080',
'--start-maximized'
]
答:
0赞
Thomas J.
7/31/2023
#1
似乎正如评论者所建议的那样,我发现了类似的推理。
通过本地 PC 运行,它的行为与在 lambda 上运行不同。正如我进一步发现的那样,简单地说,网站确实会阻止来自机器人的流量(将 lambda IP 视为这样)。
简单地说,如果其他人遇到类似的麻烦 - 使用puppeteer stealth插件,否则分析网站。
由于我使用的网站 - 托管在 shopify 上,似乎没有简单的四处走动。
评论
<div class="advertisments"></div>
<div class="advertisments"></div>