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

为何浏览器可访问网站,wget/curl却返回403 Forbidden?

CloudFront返回403 Forbidden的排查与解决办法

一、进一步测试方向

  • 完整复制浏览器请求头:打开浏览器开发者工具(F12),切换到「网络」标签,找到目标请求,复制全部请求头字段(包括Cookie、Accept、Accept-Language、Accept-Encoding、Connection等),直接粘贴到wget/curl命令中。示例curl命令:
    curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" \
         -H "Referer: https://xxx.com/" \
         -H "Cookie: 从浏览器复制的完整Cookie内容" \
         -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8" \
         -H "Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3" \
         https://目标网址
    
  • 验证Cookie有效性:部分CloudFront防护依赖会话Cookie,先在浏览器完成访问流程(如首页跳转、登录),再复制当前Cookie到请求中,测试是否能绕过限制。
  • 核对请求方式:确认浏览器使用的是GET还是POST请求,wget默认用GET,若目标接口是POST,需调整命令(如wget加--post-data参数)。
  • 排查IP封禁:切换网络环境(如手机热点、代理)重新请求,判断是否是当前IP被CloudFront的WAF规则拉黑。
  • 检查网站WAF配置(自有网站):若这是你自己的网站,登录AWS控制台查看CloudFront关联的WAF规则,确认是否存在限制非浏览器请求、高频请求的规则。

二、可行解决办法

  • 使用无头浏览器模拟:用Playwright、Puppeteer这类工具完全模拟浏览器行为,包括JS渲染、Cookie自动管理、会话保持,避免被防护机制识别为非浏览器请求。
  • 控制请求频率:若因请求过于频繁触发防护,给wget/curl添加间隔参数,比如wget用--wait=3(每次请求间隔3秒),curl配合sleep命令批量请求。
  • 模拟完整请求流程:先请求网站首页获取初始Cookie和会话标识,再携带这些信息请求目标页面,模拟用户正常访问路径。
  • 联系网站管理员(第三方网站):若无法自行绕过,直接联系网站运维人员说明需求,申请解除对合法爬虫/请求的限制;自有网站则调整CloudFront和WAF规则,放行合规请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:10:20