AWS环境访问SEC.GOV设置User-Agent仍返回403错误如何解决
问题原因
SEC的反爬策略对AWS公共IP段的拦截规则比其他网络环境更严格,大量无合规标识的自动化爬虫运行在AWS公共实例上,导致该IP段的默认拦截阈值更低。你当前使用的无意义UATEST也不符合SEC的流量归属声明要求,会被直接拦截。
解决方案
- 替换无意义的User-Agent,按照SEC要求填写真实的归属信息,格式为
[机构/项目名称] [联系邮箱],例如MyDataProject admin@mydomain.com,合规的UA是访问的必要前提。 - 增加请求间隔,两次请求之间至少间隔10秒,SEC官方明确要求自动化请求频率不得超过每秒10次,高频请求无论IP归属都会被临时封禁。
- 补充常规浏览器请求头,降低被反爬策略识别的概率,可添加
Accept、Accept-Language字段。 - 若调整后仍被拦截,可更换AWS弹性IP,或使用代理池轮换IP,避开已被SEC拉入黑名单的AWS公共IP段。
调整后代码示例
import requests import time url_1 = 'https://www.sec.gov' url_2 = 'https://www.sec.gov/Archives/edgar/data/0001781258/000178125821000028/0001781258-21-000028-index.html' HEADERS = { # 替换为你真实的归属信息 'User-Agent': 'YourProjectName yourcontact@example.com', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en-US,en;q=0.5' } print(requests.get(url_1, headers=HEADERS)) # 强制间隔10秒 time.sleep(10) print(requests.get(url_2, headers=HEADERS))
内容的提问来源于stack exchange,提问作者hbk_92
相关产品推荐
相关产品推荐

