上周帮一个做本地生活团购的客户排查短链跳转失败问题,翻了三轮日志才发现是他们把source_url参数里的中文没做URL编码——这种‘低级错误’,我干过不止一次。短链接API看着简单,真上生产环境,坑比想象中多得多。
别急着写代码,先盯住这几个字段。根据我对接过17家短链服务商的经验,90%的失败都卡在这儿:
xxx.cn/618,但要注意:腾讯云限制长度≥3位且仅支持字母数字,百度则允许下划线expire_time=0才表示永不过期——这个细节文档里藏得挺深我截取了2024年6月实测有效的请求片段(已脱敏):
{
"url": "https://shop.example.com/goods?id=%E7%BA%A2%E9%85%92",
"custom_url": "hongjiu",
"expire_time": 0,
"sign": "a1b2c3d4e5f6..."
}
注意:sign不是OAuth token,而是按文档规则拼接后用密钥HMAC-SHA256生成的——别图省事用base64,腾讯会静默拒绝。
我拉了三家2024年Q2公开资费表做了横向比对(单位:元/万次):

| 服务商 | 基础套餐(≤10万次/月) | 超出部分单价 | 是否含点击统计 | 备注 |
|---|---|---|---|---|
| 腾讯云短链 | ¥99 | ¥12/万次 | ✅ 基础UV/PV | 需绑定企业认证,个人开发者无法开通 |
| 百度短网址 | ¥0(首月免) | ¥18/万次 | ✅ 含地域/设备维度 | 新用户送50万次额度,但需实名+人脸 |
| 新浪微博短链 | ¥0(开放API) | 免费 | ❌ 仅返回总点击数 | 调用量超5000次/天需邮件申请白名单 |
结论很现实:如果日均调用量<3000次,新浪免费方案最省心;要是需要深度数据分析,百度的报表确实更细——比如能分出抖音内嵌WebView和微信内置浏览器的占比,这对做渠道归因太关键了。
别信那些封装过度的SDK,直接用requests更可控。这是我压测时用的脚本片段:
import requests, time
urls = ["https://a.com/1", "https://a.com/2", ...] # 你的1000条长链
for i, long_url in enumerate(urls):
payload = {"url": requests.utils.quote(long_url), "custom_url": f"item{i}"}
resp = requests.post("https://api.baidu.com/v2/shorturl",
headers={"apikey": "your_key"}, json=payload)
if resp.status_code == 200:
print(resp.json()["short_url"])
else:
print(f"第{i}条失败:{resp.text}")
time.sleep(0.1) # 避免触发百度限流(10qps)
⚠️重点:加time.sleep(0.1)不是矫情——百度对未授权IP的突发请求,真的会返回{"error_code": 100002},查文档才知道是“频率超限”。
Authorization: Bearer xxx,而腾讯要X-TC-Key: xxx,头字段名不统一是常态Content-Security-Policy头禁止了跳转来源。建议用curl -I先看响应头如果项目小、预算紧,或者只是临时跑个活动,其实不用硬刚大厂API。像趣码短链这类工具,提供免备案的HTTPS短链、带微信卡片/抖音卡片的定制化跳转能力,还支持私信卡片场景——我们给教育类客户做过A/B测试,用趣码微信卡片的点击率比纯短链高37%,因为能透出公众号头像和摘要。当然,它更适合中小团队快速验证,大规模分发还是得回归腾讯或百度的稳定性。

短链接不是技术炫技,而是用户旅程的‘第一道门’。我见过太多团队花两周对接API,却忘了在短链后加UTM参数——结果所有流量在GA里全堆在‘direct’里。所以,对接完成≠交付完成,记得把短链生成、埋点、监控、AB测试串成闭环。下次再遇到跳转失败,先问自己:URL编码了没?Referer头合规吗?目标页CSP放行了吗?
毕竟,用户不会因为你用了多牛的API而点赞,只会因为点开后秒进活动页而留下。