Google Search Console站点地图提交脚本401认证错误求助
解决Google Search Console提交站点地图时的401认证错误及脚本优化
核心问题分析
你的401错误直接原因是Google Search Console的站点地图提交API不支持API Key认证,错误提示里明确要求使用OAuth 2访问令牌,而非API Key。另外脚本还有几个细节问题:
- 单引号包裹的字符串里
$API_KEY不会被解析为实际变量值 - 提交Google API的URL硬编码成了
sitemap.xml,未用到循环变量$i - 站点URL在API路径中未正确编码
解决方案步骤
1. 配置OAuth2服务账号认证
服务器端脚本推荐用服务账号获取认证令牌:
- 在Google Cloud控制台创建服务账号,下载对应的JSON密钥文件
- 登录Google Search Console,将服务账号邮箱添加为站点所有者(必须是所有者权限,否则提交会失败)
- 用以下命令获取临时访问令牌(替换
PATH_TO_SERVICE_ACCOUNT_KEY.json为你的密钥文件路径):
gcloud auth activate-service-account --key-file=PATH_TO_SERVICE_ACCOUNT_KEY.json gcloud auth print-access-token
该令牌有效期约1小时,脚本可自动调用命令获取,无需手动更新。
2. 修正后的bash脚本
#!/bin/bash # 替换为你的服务账号密钥文件路径 SERVICE_ACCOUNT_KEY="/path/to/your/service-account-key.json" SITE_URL="https://test.com" # 编码后的站点URL,用于API路径 ENCODED_SITE_URL=$(echo -n "$SITE_URL" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g') SITEMAPS=('google_news' 'sitemap') API_BASE="https://searchconsole.googleapis.com/webmasters/v3/sites" echo "=== PING Sitemaps ===" DESKTOP="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" # 获取OAuth2访问令牌 ACCESS_TOKEN=$(gcloud auth print-access-token --key-file="$SERVICE_ACCOUNT_KEY") for i in "${SITEMAPS[@]}" do echo "*** GOOGLE APIS ($i) ***" # 生成站点地图的完整URL SITEMAP_URL="$SITE_URL/sitemaps/$i.xml" # 编码站点地图URL用于API路径 ENCODED_SITEMAP_URL=$(echo -n "$SITEMAP_URL" | xxd -plain | tr -d '\n' | sed 's/\(..\)/%\1/g') # 构造完整的API请求URL API_URL="$API_BASE/$ENCODED_SITE_URL/sitemaps/$ENCODED_SITEMAP_URL" echo "URL: $API_URL" # 发送PUT请求提交站点地图 curl --request PUT \ "$API_URL" \ --header "Authorization: Bearer $ACCESS_TOKEN" \ --header "Accept: application/json" \ --compressed echo -e "\n*** BING PING ($i) ***" BING_URL="https://www.bing.com/ping?sitemap=$SITEMAP_URL" echo " URL: $i.xml" curl -s -I -A "$DESKTOP" "$BING_URL" && echo " - 成功" || echo " - 失败 -" echo -e "\n" done
脚本说明
- 自动获取OAuth2令牌:通过
gcloud命令从服务账号密钥文件生成临时令牌 - 动态编码URL:用
xxd和sed对站点URL和站点地图URL进行URL编码,符合API要求 - 变量正确解析:所有含变量的字符串用双引号包裹,确保变量被正确替换
- 修复Bing请求的User-Agent:添加合理的桌面浏览器UA,避免被拦截
验证方法
运行脚本后,若返回空响应或200 OK状态码,说明站点地图提交成功,可登录Search Console查看状态确认。
内容的提问来源于stack exchange,提问作者Mateo Diaz lopez
相关产品推荐
相关产品推荐

