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

Python调用Google Web Risk提交API时的认证问题求助

解决Google Web Risk提交API的认证问题

我明白你现在卡在Google Web Risk提交API的认证环节了,官方文档确实有时候不够直观,咱们一步步来解决这个问题。

首先,你遇到的错误提示"request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential.",核心原因是你用的API Key认证方式不适用于这个API。Google Web Risk的提交API属于需要身份权限的写入操作,必须使用OAuth 2.0凭证(比如你手里的服务账号JSON文件),而不是简单的API Key。

接下来咱们一步步配置正确的认证流程:

1. 安装必要的依赖库

首先需要安装Google官方的认证库和requests,用来处理凭证生成和API请求:

pip install google-auth requests

2. 使用服务账号JSON完成认证

你下载的服务账号JSON文件是关键,咱们用它来生成有效的OAuth 2.0访问令牌,然后附加到API请求中。下面是完整的代码示例:

import requests
from google.oauth2 import service_account
from google.auth.transport.requests import Request

# 替换成你的服务账号JSON文件的本地路径
SERVICE_ACCOUNT_PATH = "/path/to/your/service-account-file.json"
# Web Risk API的授权范围(固定值)
WEBRISK_SCOPE = ["https://www.googleapis.com/auth/webrisk"]
# 替换成你的Google Cloud项目ID
PROJECT_ID = "phishing-project-NUMBER"

# 加载服务账号凭证
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_PATH,
    scopes=WEBRISK_SCOPE
)

# 自动刷新过期的凭证(如果需要)
if credentials.expired and credentials.refresh_token:
    credentials.refresh(Request())

# 构造API请求
api_url = f"https://webrisk.googleapis.com/v1/projects/{PROJECT_ID}/uris:submit"
payload = {
    "submission": {
        "uri": "http://BADDOMAIN.com"
    }
}
headers = {
    "Authorization": f"Bearer {credentials.token}",
    "Content-Type": "application/json"
}

# 发送请求并处理响应
response = requests.post(api_url, json=payload, headers=headers)
response_data = response.json()

if response.status_code == 200:
    print("域名提交成功!")
    print(response_data)
else:
    print(f"请求失败,状态码:{response.status_code}")
    print(response_data)

3. 关键注意事项

  • 权限配置:确保你的服务账号在Google Cloud控制台中被授予了合适的权限,比如Web Risk Submitter角色(遵循最小权限原则),或者项目级的Editor角色(测试阶段可以临时使用,生产环境建议用更细分的权限)。
  • JSON文件路径:一定要替换成你本地服务账号JSON文件的正确路径,避免路径错误导致凭证加载失败。
  • 为什么不用API Key:API Key通常用于无需用户身份验证的公开数据读取操作,而Web Risk的提交API涉及向Google提交恶意域名,属于需要身份校验的写入操作,因此必须使用OAuth 2.0凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:04:10