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

AWS EC2服务器Python3请求网站返回403,本地正常求助

解决EC2上Python请求返回403但本地正常的问题

这种情况我碰到过好几次,大概率是目标网站的反爬机制或者IP限制在搞鬼,下面给你拆解可能的原因和对应的解决办法:

1. 请求头缺少关键识别信息

很多网站会通过User-Agent这类请求头判断访问者是否为合法客户端。本地发起请求时,你的Python环境(或者浏览器)自带的User-Agent可能被网站认可,但EC2上的requests库默认的UA字符串很容易被识别为非人工请求,直接触发403拦截。

解决办法:手动添加模拟浏览器的请求头,示例代码:

import requests

# 模拟Chrome浏览器的请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'Accept-Language': 'en-US,en;q=0.9'
}

response = requests.get('https://volusia.county-taxes.com', headers=headers)
print(response.status_code)

2. EC2实例IP被目标网站封禁

云服务商(包括AWS)的IP段经常被反爬系统标记为高风险,因为大量爬虫会部署在云主机上。你的EC2 IP可能已经被目标网站加入了黑名单,导致直接拒绝访问。

解决办法:

  • 最简单的方式:停止当前EC2实例,重新启动(如果没有绑定弹性IP,重启后会分配新的公网IP),再测试请求
  • 如果重启后还是不行:更换EC2实例的可用区,不同可用区的IP段通常不同
  • 合法用途下:可以尝试联系目标网站的管理员,说明你的访问需求,申请解封IP

3. 地区访问限制

目标网站可能只允许特定地区的IP访问,你的本地IP在允许范围内,但EC2实例所在的AWS区域不在允许列表里。

解决办法:

  • 切换EC2实例到和本地IP同地区的AWS可用区(比如本地是美国东部,就把EC2部署在us-east-1区域)
  • 如果无法切换区域,可以考虑使用AWS CloudFront作为中转,配置CloudFront的边缘节点到允许访问的地区

4. AWS网络配置限制(概率较低)

虽然默认情况下EC2的安全组和NACL是允许所有出站流量的,但也有可能你不小心配置了限制HTTPS(443端口)的规则。

解决办法:

  • 检查EC2实例绑定的安全组,确保出站规则里允许0.0.0.0/0访问443端口
  • 检查VPC的网络访问控制列表(NACL),同样确保出站规则允许443端口的流量

额外验证步骤

你可以先在EC2上用curl命令测试,看看能不能得到更多拦截细节:

curl -v "https://volusia.county-taxes.com"

查看返回的响应内容,有些网站会在403页面里说明拦截原因(比如"IP blocked"或者"Invalid User Agent"),能帮你更快定位问题。

内容的提问来源于stack exchange,提问作者Sravan kunnummal.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:10:58