https://developers.google.com/search/apis/indexing-api/v3/prereqs?hl=en_GB
官方文档
1. 在创建服务账号部分需要注意的是:
第二步授权要把服务账号的邮箱地址加上
2. 验证完网站站长之后需要注意的点
a. https://search.google.com/search-console/settings 进入"设置"里面,进入"用户和权限",点击"添加用户", 将刚才服务账号生成的邮箱添加进去,并且给他授权"所有者"
python 脚本批量推送的方法
successful=[]
requests={url:"URL_UPDATED" for url in urls}
JSON_KEY_FILE = 'path'
SCOPES = ["https://www.googleapis.com/auth/indexing"]
ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish"
# Authorize credentials
credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_KEY_FILE, scopes=SCOPES)
# Build service
service = build('indexing', 'v3', credentials=credentials)
def insert_event(request_id, response, exception):
if exception is not None:
print("error:",exception)
if "RATE_LIMIT_EXCEEDED" in str(exception):
print("need sleep!")
else:
successful.append(response['urlNotificationMetadata']['url'])
batch = service.new_batch_http_request(callback=insert_event)
for url, api_type in requests.items():
batch.add(service.urlNotifications().publish(
body={"url": url, "type": api_type}))
batch.execute()
# 批量插入之后,相应结果会进入回调"insert_event" 失败的会print出来为什么失败
return successful
默认给的量是一个账号一天200个推送,但是可以申请更多,不过我没有成功过。解决方案也好搞,多搞点号,10个号一天就是2000个推送了。推送重置时间24个小时,我这边 测试 大致中国时间19点左右, 也就是15点能推200个,20点又能推200个。严格点控制完整的24小时即可
坑:
<HttpError 403 when requesting https://indexing.googleapis.com/v3/urlNotifications:publish?alt=json returned “Permission denied. Failed to verify the URL ownership.”. Details: “Permission denied. Failed to verify the URL ownership.”>
主要是这个报错
报错原因
- 网站没有验证网站所有权
解决办法:按照文档进行验证,验证方法很多 - 账号没有被加入到网站的"用户和权限"的列表里面
- 账号的权限有问题,得是"所有者"
- google的bug 导致账号实际没有加成功啥的,
解决办法:进入老版的webmaster页面,将账号加进去 https://www.google.com/webmasters/verification/details - 推送的网址的前半部分不是你的网站属性
比如:你的网站是https://abcdefg.com/
但是你推送的是 http://abcdefg.com 或者推的是 https://www.abcdefg.com/