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

Python调用GoDaddy Appraisal API出错,寻求替代调用方案

GoDaddy评估API调用失败排查与解决方法

原正常运行的Python代码

# 导入所需库
import requests
import csv
import numpy
import random
import time  # 补充原代码缺失的time模块

# GoDaddy开发者密钥
api_key = "##########################"
secret_key = "######################"

# 请求头配置
headers = {"Authorization": "sso-key {}:{}".format(api_key, secret_key)}

# 评估API端点
appraisal = "https://api.godaddy.com/v1/appraisal/{}"

# 读取关键词列表
with open("keyword.txt") as f:
    keywords = f.read().splitlines()

# 写入结果到CSV文件
with open("results.csv", "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerow(["domain", "similar domain", "price", "year"])

    # 遍历关键词调用API
    for domain in keywords:
        # 调用评估API并解析响应
        appraisal_res = requests.get(appraisal.format(domain), headers=headers).json()
        # 随机延迟避免API滥用
        delays = [3, 5, 7, 4, 4, 11]
        time.sleep(numpy.random.choice(delays))
        # 提取相似销售域名数据并写入CSV
        comparable_sales = appraisal_res["comparable_sales"][0]  
        writer.writerow([domain, comparable_sales["domain"], comparable_sales["price"], comparable_sales["year"]])
        print(f"{domain}")

报错信息

Traceback (most recent call last):
  File "C:\Users\LENOVO\Documents\Custom\domaines\lab\already sold finish\ok.py", line 59, in <module>
    appraisal_res = requests.get(appraisal.format(domain), headers=headers).json()
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\LENOVO\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\models.py", line 975, in json
    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
[Finished in 948ms]

排查与解决步骤

1. 先排查API实际响应内容

直接调用.json()会忽略非JSON响应,先打印响应状态码和内容,定位问题根源:

# 替换原API调用部分
response = requests.get(appraisal.format(domain), headers=headers)
print(f"域名: {domain}, 状态码: {response.status_code}")
print(f"响应内容: {response.text[:200]}")  # 打印前200字符避免输出过长

try:
    appraisal_res = response.json()
except Exception as e:
    print(f"JSON解析失败: {str(e)}")
    continue  # 跳过当前域名继续处理后续任务

通过输出可以判断是返回了空内容、HTML错误页、还是权限/限流提示。

2. 补充必要的请求头

强制要求服务器返回JSON格式,避免返回其他类型内容:

headers = {
    "Authorization": f"sso-key {api_key}:{secret_key}",
    "Accept": "application/json"
}

3. 验证API端点和域名格式

  • 确认GoDaddy评估API端点是否有变更,当前官方端点是否仍为https://api.godaddy.com/v1/appraisal/{domain}
  • 检查keyword.txt中的内容是否为完整域名(如example.com),而非裸关键词。部分API要求必须传入带后缀的完整域名。

4. 优化限流处理与重试机制

原代码的随机延迟可能不足以应对限流,添加自动重试逻辑处理限流/服务器错误:

from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

# 创建带重试策略的会话
session = requests.Session()
retry_strategy = Retry(
    total=3,  # 最多重试3次
    backoff_factor=1,  # 重试间隔指数递增(1s, 2s, 4s...)
    status_forcelist=[429, 500, 502, 503, 504]  # 需要重试的状态码
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("https://", adapter)

# 使用session发起请求
response = session.get(appraisal.format(domain), headers=headers)

5. 确认API密钥权限与配额

  • 登录GoDaddy开发者后台,检查新密钥对应的应用是否开通了Domain Appraisal API权限
  • 查看API调用配额是否耗尽,是否需要申请提升配额

6. 检查网络环境

确保本地网络可以正常访问GoDaddy API服务器,没有被防火墙、代理拦截。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 03:42:35