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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:40:58