你将构建什么
部署在 Vercel 上的 Next.js API 路由,其功能为:- 接收来自 Bright Data 的 POST,包含已爬取 LinkedIn 个人资料的 JSON 数组
- 将每个个人资料映射到规范化的 CRM 形状的联系人记录
- 记录映射的记录,以便你可以在 Vercel 仪表板中检查它们
前置条件
- 一个 Bright Data 账户,带有 API 密钥(获取你的密钥)
- 一个免费的 Vercel 账户
- 本地安装的 Node.js 18+
- 已安装的 Vercel CLI:
npm install -g vercel
第 1 部分:搭建 Next.js 项目
在新终端中,创建一个最小的 Next.js 项目:第 2 部分:添加 webhook 路由
创建文件app/api/webhook/linkedin/route.ts:
app/api/webhook/linkedin/route.ts
route.ts 文件视为 API 端点,因此仅此文件就在部署后为你提供了一个工作的 POST /api/webhook/linkedin 路由。
第 3 部分:部署到 Vercel
从项目根目录:第 4 部分:触发爬取
打开第二个终端并触发 Bright Data LinkedIn 爬虫,将其指向你的 Vercel URL:YOUR_API_KEY 替换为你的 Bright Data API 密钥,将 linkedin-to-crm-<hash> 替换为你的实际 Vercel URL。
你应该立即看到如下响应:
snapshot_id 执行任何操作。Bright Data 在作业完成时将结果 POST 到你的 Vercel 端点。对于两个个人资料,这通常需要 30 到 60 秒。
切换到 Vercel Logs 选项卡。一分钟内你应该会看到类似以下内容:
第 5 部分:将个人资料映射到 CRM 形状
现在处理程序仅记录名称和职位。真正的 CRM 期望具有特定字段名称的联系人记录:full_name、job_title、company 等。让我们将 Bright Data 有效负载规范化为该形状。
将 app/api/webhook/linkedin/route.ts 替换为:
app/api/webhook/linkedin/route.ts
保护 webhook
现在,任何猜到你的 Vercel URL 的人都可以向其 POST 假个人资料数据。在你将实时数据管道进实际 CRM 之前,锁定端点。 Bright Data 的触发调用接受webhook_header_Authorization 查询参数,该参数被转发为 webhook POST 上的 Authorization 标头:
WEBHOOK_SECRET 设置为环境变量,然后重新部署。
Bright Data 还发布了一个 webhook 源 IP 列表,你可以将其列入白名单。请参阅 webhook 参考中的 Allowlist webhook IPs。
恭喜
你已构建了一个端到端的管道,该管道爬取 LinkedIn 个人资料并向你自己的服务器提供 CRM 就绪的联系人记录:- 部署在 Vercel 上的 Next.js API 路由,接收 Bright Data webhook
- 一个映射器函数,将 Bright Data 的个人资料架构规范化为 CRM 形状的联系人
- 一个触发调用,以异步方式触发爬取并告诉 Bright Data 将结果发送到何处
route.ts 中注释掉的块概述了这一点。
后续步骤
异步批量请求
在单个批处理作业中爬取数百个 URL。
Amazon S3 交付
当有效负载超过 Vercel 的 4.5 MB 正文限制时,用 S3 存储桶交换 webhook。
Webhook 参考
完整的参数列表、身份验证标头和 IP 白名单。
HubSpot Contacts API
处理程序中注释 POST 的直接替换。