海外笔记 logo海外笔记EN

批量短链接生成:用Bitly API处理100条长链接

Nolan聊8 分钟
批量短链接生成:用Bitly API处理100条长链接
内容决策图
批量短链接生成
1离线短链接
2长链接批量处理
3社交媒体短链

这张图用于快速理解文章围绕“tool”展开的三个关键判断,不代表平台功能或收益承诺。

社交媒体、二维码和线下物料经常需要短链接,但“把网址变短”只是表面需求。生产环境更重要的是品牌域名、链接能否迁移、访问分析、隐私、批量失败重试和长期可用性。

本文给出可复核的批量短链接生成流程:先清洗 CSV,再调用 Bitly API,最后把成功、失败和原始长链一起输出。API 与套餐限额会变化,代码应与当前Bitly API 文档核对。

先选托管方式

方案优点风险与适用场景
BitlyAPI、分析和品牌域名能力成熟套餐与调用限额需核实,适合营销团队
TinyURL可手动创建,也提供认证APIAPI同样需要令牌;适合较轻量需求
Rebrandly强调品牌短域名和链接管理费用与集成需比较,适合品牌链接体系
自建重定向域名和映射由自己控制需要监控、安全、备份和滥用防护

Google 的 Firebase Dynamic Links 已于 2025 年 8 月 25 日关闭,官方说明旧链接将返回错误,见停用FAQ。它不再是新的短链项目选项。

输入文件格式

创建 UTF-8 编码的 urls.csv

id,long_url
campaign-001,https://www.example.com/products/a?utm_source=instagram
campaign-002,https://www.example.com/products/b?utm_source=youtube

在缩短前先确认长链接使用 https://、目标域名正确、UTM 参数经过编码,并去掉不必要的个人信息。不要把邮箱、订单号或访问令牌直接放进查询参数。

使用 Bitly API 批量处理

安装依赖:

python -m pip install requests

把 Bitly 令牌放在环境变量,不要写进代码或提交到 Git:

export BITLY_TOKEN="your-token"

保存以下代码为 shorten_csv.py

import csv
import os
import time
from urllib.parse import urlparse

import requests

API_URL = "https://api-ssl.bitly.com/v4/shorten"
TOKEN = os.environ["BITLY_TOKEN"]

def valid_http_url(value):
    parsed = urlparse(value)
    return parsed.scheme in {"http", "https"} and bool(parsed.netloc)

def shorten(session, long_url, attempts=3):
    for attempt in range(attempts):
        response = session.post(
            API_URL,
            json={"long_url": long_url},
            timeout=20,
        )
        if response.status_code in {200, 201}:
            return response.json()["link"], "ok"
        if response.status_code == 429 or response.status_code >= 500:
            time.sleep(2 ** attempt)
            continue
        return "", f"HTTP {response.status_code}: {response.text[:160]}"
    return "", "retry limit reached"

session = requests.Session()
session.headers.update({
    "Authorization": f"Bearer {TOKEN}",
    "Content-Type": "application/json",
})

with open("urls.csv", newline="", encoding="utf-8-sig") as source, \
     open("shortened_urls.csv", "w", newline="", encoding="utf-8-sig") as target:
    reader = csv.DictReader(source)
    writer = csv.DictWriter(
        target,
        fieldnames=["id", "long_url", "short_url", "status"],
    )
    writer.writeheader()

    for row in reader:
        long_url = row["long_url"].strip()
        if not valid_http_url(long_url):
            short_url, status = "", "invalid URL"
        else:
            short_url, status = shorten(session, long_url)
        writer.writerow({**row, "short_url": short_url, "status": status})

运行:

python shorten_csv.py

输出文件保留原始 ID、长链接、短链接和错误状态。即使第 37 条失败,也不会丢失其他结果;修复失败原因后,可以只重跑失败行。

Excel 用户怎样使用

Excel 可直接打开和保存 CSV。建议用列名而不是“第几列”作为程序接口,避免插入一列后脚本写错位置。若必须使用 .xlsx,可以在流程前后转换格式,但短链创建仍然需要网络与服务端重定向,并不是真正的离线计算。

上线前验证

  1. 随机打开至少 10 条短链,核对最终 URL、UTM 和移动端页面;
  2. 确认服务端使用 301、302 或 307 中符合业务需要的跳转,并保留映射表;
  3. 检查品牌域名的 DNS、HTTPS 与续费负责人;
  4. 在隐私政策中说明点击分析与第三方服务;
  5. 为失效、跳错和异常流量建立定期监控;
  6. 不要使用短链接掩盖联盟关系、下载文件类型或可疑目标。

短链的长期价值来自可控域名、可靠映射和清楚的数据治理,而不是一次生成了多少字符更少的网址。

常见问题

可以完全离线生成可用的短链接吗?
不能只靠本地字符串转换。短链接必须由一个可访问的域名接收请求并重定向到长链接。你可以离线整理和校验URL,但创建及点击跳转仍依赖Bitly、TinyURL或自建重定向服务。
短链接是否会过期?
取决于服务商、套餐、账户状态和链接设置。生产链接应使用自己控制的品牌域名或可导出映射的服务,并定期检查HTTP状态,不能假设免费第三方链接永久有效。
为什么不再推荐Firebase Dynamic Links?
Google 已在2025年8月25日关闭Firebase Dynamic Links,旧链接停止服务。现有项目应迁移到其他深链或重定向方案,而不是继续调用旧API。