r/Perplexity 用户报告 Sonar API 积分已被擦除。一位 r/ComplexWebScraping 用户称赞 HasData,因为它永远不会丢失。您如何知道哪个 API 是可靠的?建立您自己的正常运行时间基准。
前置条件
- 用于比较 2-3 个 SERP API 的 API 密钥
- Python 3.8+
- 用于日志记录的 SQLite 或 PostgreSQL
操作指南
步骤 1: 定义基准查询
在所有 API 中使用相同的查询以进行公平比较。
Python
benchmark_queries = [
'best crm software 2026',
'python web framework comparison',
'machine learning deployment',
'competitor analysis tools',
'api pricing comparison',
]步骤 2: 构建测试工具
调用每个 API 并进行计时和错误跟踪。
Python
import requests, time, sqlite3
def test_api(name, url, headers, payload):
start = time.time()
try:
r = requests.post(url, headers=headers, json=payload, timeout=30)
return {'api': name, 'status': r.status_code, 'latency': time.time()-start, 'success': r.status_code==200}
except Exception as e:
return {'api': name, 'status': 0, 'latency': time.time()-start, 'success': False, 'error': str(e)}步骤 3: 将结果记录到数据库
存储每个测试结果和时间戳。
Python
conn = sqlite3.connect('api_uptime.db')
conn.execute('CREATE TABLE IF NOT EXISTS results (ts TEXT, api TEXT, query TEXT, status INT, latency REAL, success INT)')
def log_result(result, query):
conn.execute('INSERT INTO results VALUES (datetime("now"), ?, ?, ?, ?, ?)',
(result['api'], query, result['status'], result['latency'], int(result['success'])))
conn.commit()步骤 4: 按 cron 计划运行
一周内每 15 分钟测试一次,以获得有意义的数据。
Bash
# crontab: */15 * * * * python benchmark.py
# After 1 week: 672 data points per API
# Compare: uptime %, P50/P95 latency, error patterns步骤 5: 生成比较报告
用于比较正常运行时间和延迟的 SQL 查询。
SELECT api,
COUNT(*) as total,
SUM(success)*100.0/COUNT(*) as uptime_pct,
AVG(latency) as avg_latency,
MAX(latency) as p100_latency
FROM results
GROUP BY apiPython 示例
Python
# Full benchmark harness:
import requests, time, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def bench_scavio(query):
start = time.time()
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query})
return {'latency': time.time()-start, 'status': r.status_code}JavaScript 示例
JavaScript
const start = Date.now();
const resp = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'google', query: 'test query'})
});
console.log(`Latency: ${Date.now() - start}ms`);预期输出
JSON
SQLite database with uptime and latency data for multiple SERP APIs. Weekly report showing uptime %, P50/P95 latency, and error patterns.