用途:诊断 OSS 直链访问类问题,包括链接打开变成下载(含默认域名 0048 强制下载策略,涉及 2019-09 之后创建桶中的图片)、浏览器无法预览图片、公共读桶单个对象返回 403 或错误码 0003-00000005、自定义域名绑定失败或提示未备案、开启防盗链后自家站点被拦(Referer 白/黑名单误判)。
主要能力:确认调用者身份;用只读 GetBucketInfo 确认桶存在并取元数据;读取真实 Referer 白名单与黑名单(官方校验顺序:空 Referer→黑名单→白名单);读取静态网站托管状态(仅作上下文);列出已绑定自定义域名;可选对默认域名发起免凭证匿名 HEAD 探测,按状态码、Content-Type、Content-Disposition、X-Oss-Force-Download 判定预览还是下载;当非私有桶匿名探测返回 403 时,按错误码 0003-00000005 的三因归因排查(Referer 前置条件→Block Public Access 前置条件→对象私有 ACL GetObjectAcl→鉴权失败→未归因升级)。最终给出有证据支撑的结论与配置模板。
使用方式:所有诊断必须通过 scripts/ 下的脚本执行,入口为 scripts/oss_direct_access_diagnosis.py,身份脚本为 scripts/sts_token.py。命令示例:cd $SKILL_DIR && python3 scripts/sts_token.py --json;cd $SKILL_DIR && python3 scripts/oss_direct_access_diagnosis.py --bucket <name> [--object <key>] [--domain <custom-domain>] [--page-referer <url>] [--region <region>]。参数中 --bucket 必填,其余可选;UID 由 aliyun sts get-caller-identity 推导,不向用户索要。涉及配置或用法问题时必须带 --question "",脚本先匹配内置知识再核对官方文档,答案须引用脚本返回的文档 URL;若文档校验为 DEGRADED 需明确说明无法联网核对。aliyun CLI 需 3.3.3 或更新版本,可用 aliyun version 与 aliyun upgrade --yes 检查升级。
限制:严格只读,禁止生成、写入或执行任何变更类 OSS API(如 PutBucketReferer、PutBucketWebsite、PutBucketCname、PutObject、DeleteObject、ACL/策略变更),包括“供用户手动运行”的命令;只输出模板与手动手动指引。不得自组 ossutil/SDK/curl 命令绕过脚本;匿名探测仅可经入口脚本 --object 发起。禁止读取、打印或传递 AK/SK/STS,凭证仅由默认凭证链解析。结论必须基于实际返回数据,查询失败或为空需记录并说明局限,不得编造。API 出错时记录 [WARN]、继续其余步骤并产出 STATUS: DEGRADED 报告。桶未配置网站托管返回 NoSuchWebsiteConfiguration 属正常状态;Referer 列表与 CNAME 列表为空同样是正常配置状态。范围仅限直链问题,盗链取证、网站托管规则、图片处理、浏览器 CORS、签名 URL、CDN 回源、跨账号授权、传输加速等属同级技能,需说明边界并转交。静态网站托管与防盗链等配置的最终应用始终由用户手动完成。