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

Azure部署Python/Django应用urllib请求被拦截返回403如何解决

Azure部署Django应用urllib触发403错误解决方案

1. 触发拦截的具体WAF规则

该场景下的拦截基本都来自CRS规则集中的913101规则,对应规则短标签为Scraper Detection: Typical Scraping User-Agent Header,这条规则会匹配所有脚本类工具的默认User-Agent标识,urllib默认发送的Python-urllib/3.x格式UA正好在规则匹配列表中,因此会触发403拦截。

2. 配置WAF排除规则方法

有两种安全方案,无需关闭全部WAF规则:

  • 方案1(优先选择,无需修改Azure配置):修改urllib请求的User-Agent头,模拟普通浏览器请求,代码示例如下:
import urllib.request

url = "你要拉取的文件地址"
# 自定义UA,模拟Chrome浏览器
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
}
req = urllib.request.Request(url, headers=headers)
response = urllib.request.urlopen(req)
  • 方案2(修改WAF配置):进入自定义WAF策略的「托管规则」页面,找到对应CRS版本下的913101规则,将其单独设置为「已禁用」;也可以添加排除规则:当请求头User-Agent包含Python-urllib时,跳过该条规则的校验。

3. 替代请求库说明

常用替代库为requests,使用更简洁,但需注意:拦截和使用的库无关,只和请求带的User-Agent有关,就算用requests、urllib3、aiohttp等其他库,如果使用默认UA(比如requests默认UA为python-requests/2.x),依然会触发WAF拦截,只要按上述方法自定义UA,所有请求库都可以正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:09:02