代理机构会搜索”子账户”(sub-accounts),因为大多数工具都用这个词来描述一个母账户登录下挂着多个客户账户的结构。在搭建任何东西之前,先弄清楚这个概念在 Shifter 中具体对应什么是值得的,因为正确的结构取决于此。
在 Shifter 上,有两个工具承担这项职责。工作区(workspace) 是一个独立的空间,拥有自己的套餐、钱包、发票和团队,同一个人可以属于多个工作区,并通过侧边栏在它们之间切换。子账户(sub-account) 是代理用户名中的一个标签,用于按客户拆分单个套餐的流量,在面板和 API 中分别统计(于 2026 年 10 月推出)。用量按套餐统计,套餐内再按子账户统计。把这些事实纳入你的结构,其他一切都会水到渠成。
子账户需要实现什么
抛开术语不谈,代理机构对客户子账户其实有四个诉求。
| 需求 | 含义 | Shifter 如何提供 |
|---|---|---|
| 隔离 | 一个客户的流量和预算永远不会与另一个客户混在一起 | 套餐永远不会跨工作区 |
| 归因 | 你能说清每个客户花了多少钱 | 用量按套餐和套餐内子账户分别统计 |
| 访问控制 | 合适的人看到合适的内容 | 每个工作区有 Viewer、Billing 和 Admin 角色 |
| 干净的下线流程 | 客户离开时不影响其他任何人 | 移除成员,关闭该客户的套餐 |
本指南接下来的内容,就是如何安排工作区和套餐,使这四点同时成立。
两种可行的结构
客户自有的工作区
每个客户拥有自己的工作区。客户为钱包充值并接收发票。代理机构的客户负责人作为 Admin 被邀请进入每个客户的工作区,并从那里管理采集工作。
当客户乐于拥有自己的账单关系时,这是最简洁的安排。隔离是绝对的,归因无需额外工作,因为每个客户的发票就是独立的,下线流程就是客户将代理机构从其工作区中移除。一个代理机构的登录账号可以通过工作区切换器到达每一个客户。
代理机构自有工作区,每个客户一个套餐
代理机构拥有一个工作区,在其中为每个客户单独购买一个套餐,并根据每个套餐的用量向客户计费。
这适合那些将采集作为代运营服务一部分转售的代理机构。只要严格遵守规则,归因就能成立: 一个客户,一个套餐,绝不共享,或者在共享套餐上做到 一个客户,一个子账户。选择这种方式前,有两个后果值得了解。
- 钱包的范围是整个工作区,任何套餐的超额用量都从该钱包中扣除。工作区内的每个套餐都从同一个池子里取用,所以一个客户的流量激增可能会消耗掉另一个客户所依赖的余量。密切关注每个套餐的超额情况,或者为高流量客户单独开设工作区。
- 工作区内的一切对其成员都是可见的。不要把客户联系人邀请进共享的代理机构工作区,即使只是作为 Viewer,因为他们会看到其他所有客户的套餐和发票。
许多代理机构最终采用混合模式: 为希望自己管理账单的大客户设立客户自有的工作区,同时用一个代理机构工作区承载按代运营计费的中小客户的套餐。
具体设置
无论采用哪种结构,操作方法都是一样的。
- 打开团队页面(Team page),在你要管理的工作区内,从面板侧边栏进入。
- 通过邮箱邀请并选择角色。 已有 Shifter 账户的用户下次登录时会看到一键加入(Join)的提示,并保留自己原有的账户。新的邮箱地址则会走一个简短的注册流程,通过魔术链接登录,无需设置密码。
- 在工作区之间切换,通过侧边栏的下拉菜单,一旦你属于多个工作区该菜单就会出现。屏幕上的一切内容,套餐、钱包、发票、团队,都会随之切换。
- 在客户所属的工作区中购买该客户的套餐。 套餐事后不能在工作区之间转移,所以买错工作区就意味着要重新购买。
每个工作区的席位上限为 10 个,属于软性限制。如果大客户需要更多席位,可以联系支持团队协商,而不是一个硬性限制。如果客户关系发生变化,工作区的所有权也可以应要求进行转移。
该功能本身在团队工作区(Team Workspaces)介绍一文中有详细说明。
选择角色
让每个人拥有的角色权限保持在其所需的最低限度。
| 角色 | 可执行的操作 | 适用对象 |
|---|---|---|
| Viewer | 查看套餐、流量和发票;浏览产品目录 | 希望查看用量的客户方利益相关者,且仅限于他们自己的工作区 |
| Billing | Viewer 的全部权限,外加为钱包充值、支付发票、购买或升级套餐 | 任何一方持有付款卡的人 |
| Admin | Billing 的全部权限,外加管理套餐和团队 | 负责采集工作的代理机构客户负责人 |
角色是按工作区设定的,而非全局性的。同一个人可以在一个客户的工作区中是 Admin,在另一个客户的工作区中是 Viewer,生效的始终是当前活跃工作区中的角色。
按客户追踪用量
每个套餐在面板中都有实时用量视图,显示在仪表盘总览和套餐自身的页面上,每分钟更新一次。它显示本周期内剩余的带宽、每日消耗趋势,以及按主机名统计的主要流量目的地。
这三项信息加在一起,足以很好地支撑客户归因工作。
剩余带宽 告诉你某个客户是否能在额度内完成本周期。
每日趋势 显示消耗何时发生变化,这通常意味着出现了新任务、某个爬虫失控,或是客户在未明说的情况下要求了更大的范围。
按主机名统计的主要目的地 是容易被低估的一项。它能让你核实每个客户的套餐确实是在访问该客户的目标。如果一个套餐的主要目的地属于另一个客户的竞争对手范围,那说明某个任务中用错了凭据。
要在多个客户之间拆分一个套餐,为每个客户设置一个子账户: 在该客户任务的用户名后面直接加上 -subaccount-CLIENT,面板和用量 API 就会分别报告每一个。未加标签发送的流量事后无法拆分,所以在共享套餐上,务必为每个任务加上标签。
一个针对某个客户的请求,带有定向参数和会话标签后,看起来像这样:
curl -x customer-USERNAME-subaccount-client_a-country-us-sid-abc123-ttl-600:PASSWORD@p.shifter.io:443 \
http://ip-info.com/json
通过 API 获取同一客户 10 月的流量:
curl "https://shifter.io/api/v1/memberships/68057/subaccounts/client_a/usage?start=2026-10-01&end=2026-11-01&api_token=YOUR_API_TOKEN"
子账户名称为 1 到 16 个字母、数字或下划线,不含连字符,且区分大小写。无需任何设置: 子账户在首次请求几分钟后就会出现。子账户只追踪流量,它们共享套餐的带宽,不会为每个客户单独设置限额。
每月运营流程
归因是一种习惯,而不是只跑一次的报告。
- 每个周期开始时,记录每个套餐的起始额度和周期日期。
- 每周,将每个客户的消耗与预期消耗速率进行比对,并以已消耗带宽除以已过天数、再乘以周期总天数的方式,重新预测月末用量。
- 当趋势出现跳变时,先检查主要目的地,再判断是否是客户的范围扩大了。
- 在额度用尽之前,针对每个客户决定超额部分应从钱包扣除,还是任务应暂停。住宅套餐的超额用量按该套餐自身的每 GB 费率从钱包中计费。
- 当客户离开时,移除其相关人员,从所有任务中撤下该套餐的凭据,并关闭该套餐。
每周核查所用的预测方法,详见住宅代理带宽预测一文。
凭据是隔离的另一半
工作区让套餐彼此分开。而你自己的系统则必须让凭据彼此分开。
每个套餐都有自己专属的凭据。将它们按客户分别存储在你的密钥管理系统中,每个客户的任务只分配该客户的套餐,并且绝不要为了图省事而把一个客户的凭据复制到另一个客户的任务中,因为这正是归因在悄无声息中失效的原因。不要记录完整的代理连接字符串,这是凭据泄漏进日志聚合系统最常见的途径。
会话 ID(Session ID) 仍然可以由你自行命名。为其加上客户代码前缀,如 sid-acme-serp-01,不会产生任何成本,还能让你自己的日志更易读。面板不会按会话 ID 拆分用量统计;这正是子账户存在的意义。
常见问题
Shifter 的套餐内部有子用户吗?
套餐内部没有独立的登录账户,但子账户可以按客户拆分一个套餐的流量: 它是代理用户名中的一个标签,面板和 API 会分别进行统计。访问权限按工作区管理,共有三种角色;而客户之间的完全隔离则来自于独立的套餐,以及在需要时的独立工作区。
一个代理机构的登录账号最多能管理多少个客户?
单个登录账号可以属于所需数量的任意多个工作区,并通过侧边栏在它们之间切换。10 个席位的软性上限是按工作区计算的,而不是按登录账号计算的。
客户能看到我们的其他客户吗?
跨工作区不行。但在同一个工作区内,每个成员都能看到一切,这正是为什么客户联系人只应该被邀请进入他们自己的工作区。
我可以把一个套餐从一个客户转给另一个客户吗?
套餐会一直留在购买时所在的工作区内。请从一开始就在相应客户的工作区中购买该客户的套餐。
结论
在 Shifter 上,工作区分隔的是访问权限和账单,而子账户拆分的是套餐内部的流量。为每个客户设立独立的套餐或独立的子账户,在客户自行管理账单时选择客户自有的工作区,在你转售服务时使用共享的代理机构工作区,让客户联系人远离共享工作区,并且每周而不是等到开票时才查看每个客户的用量。
按这种方式构建,隔离、归因、访问控制和下线流程都会自然而然地实现。该产品详见面向代理机构的住宅代理页面,费率详见定价页面。