logiover/bulk-url-unshortener
GitHub: logiover/bulk-url-unshortener
一款批量短链接还原工具,能够追踪任意短链接的完整重定向链并输出包含状态码、延迟等详细信息的结构化数据。
Stars: 0 | Forks: 0
# 批量短链接还原工具 — 重定向链解析器与短链接展开(无需 API Key)
[](https://apify.com/logiover/bulk-url-unshortener)
[](https://apify.com/logiover/bulk-url-unshortener)
[](https://apify.com/logiover/bulk-url-unshortener)
[](https://apify.com/logiover/bulk-url-unshortener)
**一次运行即可解析数千个短链接。** **批量短链接还原工具** 接收一个短链接列表 —— 包括 **bit.ly, t.co, ow.ly, TinyURL, short.link, Rebrandly** 及其他所有短链接服务 —— 并追踪每一步重定向跳转,直到最终目的地。每一跳都会捕获其 **HTTP 状态码、重定向类型(永久/临时)、下一个 URL 以及单跳延迟**,因此每个短链接都会展开为一整洁的结构化 JSON 数据行。普通(非短)URL 同样适用 —— 如果它们包含重定向链,也会返回完整的重定向链。
这是一个非官方的 **URL 展开器 / 短链接解析 API 替代方案**,适用于安全分析、OSINT、营销链接审计和数据丰富。**无需 API key、无需登录、无需第三方还原服务** —— 只需粘贴 URL 并运行。结果可直接导出为 JSON、CSV、Excel、JSONL 或 XML,或通过 Apify API 实时流式传输。
## 🔗 您将获得什么 / 输出字段
每个输入的 URL 都会精确生成 **一行** 包含完整重定向链和计时详情的数据:
| 字段 | 类型 | 描述 |
|-------|------|-------------|
| `originalUrl` | string | 被解析的短链接/输入的 URL。 |
| `finalUrl` | string \| null | 遵循所有重定向后的最终目标 URL。 |
| `isShortened` | boolean | 如果该 URL 发出了至少一次重定向,则为 `true`。 |
| `hopCount` | integer | 到达最终目标前的重定向跳转次数。 |
| `redirectChain` | string (JSON) | 包含每一跳的 JSON 数组:`url`、状态码、重定向类型、下一个 URL、单跳延迟。 |
| `chainUrls` | string | 重定向链中中间 URL 的逗号分隔列表。 |
| `totalLatencyMs` | integer | 解析完整链的总耗时,以毫秒为单位。 |
| `statusCode` | integer \| null | 最终响应的 HTTP 状态码(发生连接错误时为 0)。 |
| `error` | string \| null | 如果该 URL 无法解析,则显示错误信息。 |
| `resolvedAt` | string | URL 解析完成时的 ISO 8601 时间戳。 |
## 💡 使用场景
- **安全与钓鱼筛选** — 追踪可疑短链接的实际去向,*无需在浏览器中打开它*,并读取每一跳的状态码,以发现隐藏真实地址和重定向链。
- **数字取证与 OSINT** — 映射跨活动、广告网络和跟踪链接的重定向链;一次性展开整个监控列表中的短链接。
- **营销链接审计** — 验证电子邮件、社交帖子和付费广告中的短链接是否仍然指向正确的着陆页,以及是否被劫持或失效。
- **SEO 与反向链接审计** — 确认反向链接和社交资料中使用的短链接能正确解析为规范 URL,并检测会导致链接权重流失的重定向死循环。
- **品牌保护** — 扫描仿冒您品牌的短链接,并准确追踪它们重定向到了哪里。
- **数据丰富与去重** — 将解析后的目标地址追加到大型 URL 数据集中,以便您根据最终 URL(而不是短链接)进行分类、分组和去重。
## 🚀 快速开始 — 四种运行方式
### 1. Apify Console(无需代码)
打开 Actor,点击 **免费试用**,然后使用默认输入点击 **Start**,即可获得一组演示短链接的解析结果。接着,将您自己的列表粘贴到 **URLs to Unshorten** 中(每行一个)并再次运行。
▶️ **[在 Apify Console 中打开批量短链接还原工具](https://apify.com/logiover/bulk-url-unshortener)**
### 2. Apify CLI
```
npm install -g apify-cli
apify login
apify call logiover/bulk-url-unshortener \
--input='{ "urls": ["https://bit.ly/3abcXYZ", "https://t.co/xyz789"] }'
```
### 3. API / curl(一次调用即可运行并获取结果)
```
curl -X POST "https://api.apify.com/v2/acts/logiover~bulk-url-unshortener/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"urls": ["https://bit.ly/3abcXYZ", "https://tinyurl.com/example", "https://ow.ly/abc123"],
"maxConcurrency": 20
}'
```
### 4. apify-client(JavaScript & Python)
```
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('logiover/bulk-url-unshortener').call({
urls: ['https://bit.ly/3abcXYZ', 'https://t.co/xyz789'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```
```
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("logiover/bulk-url-unshortener").call(run_input={
"urls": ["https://bit.ly/3abcXYZ", "https://t.co/xyz789"],
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["originalUrl"], "->", item["finalUrl"])
```
查看 [`examples/`](./examples) 文件夹以获取更完整的 CLI、API、JavaScript 和 Python 代码片段。
## 📥 输入
所有字段均为可选 — **将输入留空即可针对内置的演示数据集运行**,其中包含流行的短链接。
| 字段 | 类型 | 默认值 | 描述 |
|-------|------|---------|-------------|
| `urls` | array | 演示集 | 要解析的短 URL,每行一个。任何 URL 都可以 —— 无论是否缩短。如果省略,将自动添加协议。 |
| `maxResults` | integer | `1000` | 本次运行中要解析的 URL 最大数量(1–100000)。保持空输入/大输入的快速和低成本。 |
| `sortBy` | string (下拉菜单) | `input` | 行排序:**输入顺序**、**重定向跳转最多优先** 或 **最慢(延迟最高)优先**。 |
| `maxRedirects` | integer | `15` | 每个 URL 在停止前要遵循的最大重定向跳转次数(1–30)。防止无限死循环。 |
| `maxConcurrency` | integer | `20` | 并行解析的 URL 数量(1–100)。值越高越快。 |
| `proxyConfiguration` | object | Apify Proxy | 用于请求的代理。建议使用以避免短链服务对单个 IP 进行速率限制。 |
## 📤 输出 — 示例记录
```
{
"originalUrl": "https://bit.ly/3abcXYZ",
"finalUrl": "https://example.com/landing-page?utm_source=twitter",
"isShortened": true,
"hopCount": 2,
"redirectChain": "[{\"url\":\"https://bit.ly/3abcXYZ\",\"statusCode\":301,\"redirectType\":\"permanent\",\"nextUrl\":\"https://example.com/lp\",\"latencyMs\":95},{\"url\":\"https://example.com/lp\",\"statusCode\":302,\"redirectType\":\"temporary\",\"nextUrl\":\"https://example.com/landing-page?utm_source=twitter\",\"latencyMs\":42}]",
"chainUrls": "https://bit.ly/3abcXYZ, https://example.com/lp",
"totalLatencyMs": 162,
"statusCode": 200,
"error": null,
"resolvedAt": "2026-07-06T12:00:00.000Z"
}
```
按 `hopCount`、`isShortened` 或 `statusCode` 过滤数据集,以分离多跳链、直接到达的链接或无效目标。
## 🔌 集成与自动化
- **定时任务** — 在 Apify 上每日或每周重新检查您的链接列表,以发现中断或被劫持的重定向。
- **Webhooks** — 在运行完成的瞬间触发下游系统(Slack、SIEM、您的 API)。
- **Google Sheets / Amazon S3 / 数据库** — 通过 Apify 集成将结果推送到表格、S3 存储桶或您的数据仓库。
- **Zapier · Make · n8n · Pipedream** — 将 Actor 连接到无代码自动化中,用于钓鱼筛选和链接监控管道。
## 📦 导出格式
结果存储在 Apify 数据集中,可从 Console 或 API 导出为 **JSON、CSV、JSONL、Excel (XLSX) 和 XML**。
## ❓ 常见问题
### 如何一次还原多个 URL?
将您的完整短链接列表粘贴到 **URLs** 字段中,然后运行一次 Actor。它会并行跟踪每一个重定向链,并为每个 URL 返回一行记录,其中包含完整的链路信息。
### 有没有无需 key 的免费 URL 还原 API?
无需管理任何 API key,也无需注册任何第三方短链接还原服务。只需提供 URL,运行 Actor,然后读取结果 —— 它作为一个非官方的 **URL 展开器 / 短链接解析 API 替代方案** 运行,您只需按解析的 URL 付费。
### 我可以在没有 API 或登录的情况下还原 URL 吗?
可以。任何短链服务都不需要账户、登录或 API key —— 只需要一个 Apify 账户。该 Actor 会解析公开可访问的重定向。
### 如何查找 bit.ly 链接的最终目的地?
将 bit.ly 链接粘贴到 **URLs** 字段中并运行 Actor;它会追踪每一次重定向跳转,并返回可导出为 CSV 或 JSON 的 `finalUrl`、`hopCount` 和完整的 `redirectChain`。
### 它能处理 t.co / X (Twitter) 短链接吗?
可以 —— t.co 链接是标准的 HTTP 重定向,可以完全解析;来自 bit.ly、ow.ly、TinyURL、Rebrandly 和自定义短域的 301/302/303/307/308 重定向也同样适用。
### 我可以不打开短链接就检查它们是否为钓鱼链接吗?
可以。Actor 会追踪可疑短链接的去向,并记录每一跳的状态码,而无需您访问该链接,因此您可以安全地进行筛选评估。
### 如果一个短链接重定向了很多次怎么办?
`maxRedirects` 设置(默认为 15,最高为 30)限制了跳转次数。如果达到限制,链将被切断,并将最后一个 URL 报告为最终目的地 —— 不会陷入无限死循环。
### 如何将还原后的 URL 导出为 CSV 或 Excel?
运行 Actor,然后从 Apify Console 或通过 Apify API 将生成的数据集导出为 **CSV、JSON、Excel 或 XML**。
### 每次运行可以解析多少个 URL?
数千个。对于非常庞大的列表,请提高 `maxConcurrency` 并保持启用 Apify Proxy,以避免短链服务对单 IP 进行速率限制。使用 `maxResults` 来限制运行量。
### 我可以追踪完整的重定向路径,而不仅仅是最终 URL 吗?
可以 —— `redirectChain` 字段包含每一跳的结构化 JSON:每一步的 URL、其状态码、重定向是永久性还是临时性的、下一个 URL 以及该跳转的延迟。
## 🔗 logiover 的相关 Actor
- ▶️ [**批量 URL 状态检查器**](https://apify.com/logiover/bulk-url-status-checker) — 用于大型 URL 列表的 HTTP 状态码、失效链接检测和响应时间。
- ▶️ [**批量 WHOIS / RDAP 查询**](https://apify.com/logiover/bulk-whois-rdap-lookup) — 域名列表的注册商、创建/过期日期和所有权信息。
👉 浏览所有 **[Apify Store 上的 logiover Actor](https://apify.com/logiover)**。
📄 **仅限文档** — 此仓库包含使用文档和示例。Actor 本身在 Apify 平台上运行。 ▶️ **运行地址:**
获得 [MIT License](./LICENSE) 许可 · © 2026 logiover
标签:Apify, URL解析, 数据可视化, 逆向工具