You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS CloudWatch Synthetics Canary无法完整加载页面问题排查

美亚页面截图不完整的原因及解决办法

1. 美亚的机器人检测触发

美亚对自动化工具的检测远严于加亚,CloudWatch Synthetics用的无头Puppeteer浏览器很容易被识别为机器人。此时美亚会返回简化版页面或阻止部分动态资源加载——虽然HTTP状态码是200(所以Canary显示执行成功),但页面内容已经和正常浏览器显示的不一致。

解决办法:

  • 模拟真实浏览器的User-Agent:在获取page后添加以下代码:
    await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');
    
  • 增加模拟人类操作的代码,降低被检测概率:
    // 模拟滚动到页面底部,触发延迟加载内容
    await page.evaluate(() => window.scrollTo(0, document.body.scrollHeight));
    await page.waitForTimeout(3000); // 等待滚动后内容加载
    

2. 页面等待逻辑不匹配美亚的动态加载特性

美亚商品页有大量动态渲染、延迟加载的内容,默认脚本的networkidle0等待条件(半秒内无网络请求)可能过早判定页面加载完成,后续仍有资源在加载;固定15秒的等待也可能没覆盖所有内容的渲染时间。

解决办法:

  • 将networkidle0改为networkidle2(半秒内最多2个网络请求),更适配动态内容多的页面:
    const response = await page.goto(url, { waitUntil: ['networkidle2'], timeout: 30000});
    
  • 替换固定等待为等待关键元素加载完成,比如等待美亚商品列表容器出现:
    // 替换原有的await page.waitFor(15000);
    await page.waitForSelector('.s-main-slot', { timeout: 20000 });
    

3. 无头浏览器默认视口尺寸过小

CloudWatch Synthetics的无头浏览器默认视口可能是移动端尺寸,美亚在小视口下会折叠布局,导致截图显示不完整;而加亚的布局在默认视口下刚好能完整展示。

解决办法:

  • 获取page后设置桌面端视口:
    await page.setViewport({ width: 1920, height: 1080 });
    

内容的提问来源于stack exchange,提问作者PlsWork

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 20:27:30