博客
方法

自推自买、点击暴增,和抓住它们的三项检查

小计划里的作弊很无聊:伙伴用自己的链接买、脚本刷链接、从不成交的流量源。三条规则抓住大多数。

Jun 15, 2026 · 13 分钟读完 · RelayWonder
self-referralclick burstsame UA, 0 conv.three nightly checks · flag · hold payout

小型伙伴计划的联盟作弊检测不需要机器学习、风控供应商或数据科学家。它需要三项每晚对账本和点击日志运行的检查:一项自推自买检查,把结账邮箱和伙伴自己的邮箱在归一化 Gmail 点号和加号别名之后做比对;一项点击暴增检查,对任何在短时间窗口内点击超过阈值的链接打标记;一项死流量检查,对任何 30 天内大量点击来自同一 user agent 字符串且零成交的链接打标记。每项检查产生一个品牌看得到的标记,被标记的伙伴的打款会冻结到有人复核为止。没有东西被自动拒绝,也没有东西被悄悄支付。这篇文章逐项描述检查的精确规则、阈值背后的算术、你应该预期的误报、被标记的伙伴会怎样、这三项检查抓不到什么,以及条款需要怎么写才能让标记成为规则而不是意外。

小计划里的作弊长什么样

能到达一个五十位伙伴的计划的作弊并不复杂。它是三件事之一,而在我们的经验里几乎总是第一件。

  • 伙伴通过自己的链接买你的产品,或者让同事去买,在一笔本来就要做的购买上拿折扣再拿佣金。代价是一笔佣金和账本的完整性。
  • 脚本或付费点击服务把伙伴的链接刷几千次。目的是抬高点击数据、触发你可能提供的按点击奖励,或者让某个流量源看起来活着。代价是误导性的数据,以及如果奖励按点击算,还有钱。
  • 一个只产生点击、从不转化的流量源。有时是脚本;更常见的是坏掉的嵌入、跟踪页面上每个链接的机器人,或者廉价的流量购买。代价和第二种一样。

盗卡和拒付欺诈也会发生,但它们由支付层处理:Stripe Radar 在付款成功前打分,拒付会成为一条负向账本记录冲回佣金 [1][2]。这里的三项检查针对的是伙伴层,支付系统看不到这一层。

第一项检查:自推自买

规则说起来很简单。对每一条佣金记录,取 Stripe 客户的结账邮箱和伙伴的账户邮箱,两边都归一化,如果相等,就不归因这笔成交并打标记。工作量在归一化上,因为做这件事的人用的不会是完全一样的字符串。

Gmail 忽略地址本地部分里的点号,所以 jane.doe@gmail.com 和 janedoe@gmail.com 投递到同一个收件箱 [3]。Gmail 和大多数其他服务商也接受加号别名,所以 janedoe+promo@gmail.com 还是同一个收件箱。googlemail.com 是 gmail.com 的别名。一位以 jane.doe@gmail.com 注册、以 janedoe+test@googlemail.com 购买的伙伴,用三种不同的写法用了同一个地址。

归一化规则:全部转小写,去掉加号之后的部分,并且仅对 Gmail 和 Googlemail 去掉点号、把域名映射到 gmail.com。
结账邮箱归一化后伙伴邮箱归一化后匹配
jane.doe@gmail.comjanedoe@gmail.comjanedoe@gmail.comjanedoe@gmail.com是
janedoe+promo@gmail.comjanedoe@gmail.comjane.doe@gmail.comjanedoe@gmail.com是
Jane.Doe@googlemail.comjanedoe@gmail.comjanedoe@gmail.comjanedoe@gmail.com是
jane@janedoe.cojane@janedoe.cojane.doe@gmail.comjanedoe@gmail.com否(域名不同)
jane.doe@outlook.comjane.doe@outlook.comjanedoe@outlook.comjanedoe@outlook.com否(Gmail 之外点号有意义)

两个细化能多抓一些而不误伤。第一,把自定义域名结账邮箱的域名和伙伴的网站域名比对:网站是 janedoe.co 的伙伴用 billing@janedoe.co 购买,是单靠邮箱规则会漏掉的自推自买。第二,不要在 Gmail 之外应用点号规则。Outlook、Yahoo 和大多数企业邮件服务器把点号视为有意义,归一化它们会制造错误匹配。

匹配之后检查做什么,和匹配本身一样重要。RelayWonder 移除归因(成交记录为未归因,品牌的收入数字保持正确),并在伙伴上显示标记。它不会封禁伙伴,因为第一次自推自买很常见的情况是测试:新伙伴点自己的链接买一个月,看看后台工作不工作。条款应该写明自推自买的成交不计佣金,这样伙伴不会意外,品牌也不用谈判。

第二项检查:点击暴增

规则:对每条伙伴链接,在滚动的 10 分钟窗口里数点击。任何窗口超过 100 次就打标记。阈值故意定得宽松。真实受众的点击分散在几小时到几天里;脚本在几秒内产生它们。

下面的算术说明为什么 10 分钟 100 次对大多数小计划是一条安全线。一条第一天 10,000 播放、简介链接点击率 2% 的 YouTube 视频,24 小时内产生 200 次点击,每小时约 8 次,头几个小时的峰值可能是每小时 30 次。峰值时每 10 分钟 5 次。要靠真实观众在 10 分钟内达到 100 次,视频需要大约 20 倍于那个峰值,也就是第一天几十万播放的视频。那个规模的伙伴会有成交和多样化的浏览器来证明。一个 3 分钟内刷 1,000 次的脚本两样都没有。

标记不是裁决。暴增被标记后,看三样东西:user agent 的分布(帖子爆了带来的真实激增会显示几十种浏览器和设备组合,脚本只有一种或几种)、IP 的分布(真实激增来自许多网络),以及之后 48 小时内有没有成交。真正的爆发三项都过,标记一分钟就能清除。一个 user agent、一个网络、零成交的暴增就是脚本,这些点击会从任何按点击的统计或奖励中排除。

self-referralclick burstsame UA, 0 conv.three nightly checks · flag · hold payout
三项每晚的检查、一个可见的标记、一次等人看过再付的冻结:这就是小计划的整个反作弊层。

第三项检查:同一 user agent、零成交

规则:对每条伙伴链接,在过去 30 天内,如果超过 500 次点击共享同一个 user agent 字符串并且链接零成交,就打标记。这抓的是暴增的慢速版本:流量稳定到达,看起来像有量,但从不购买。

user agent 头标识请求的浏览器和操作系统 [4]。真实受众是多样的:一条一个月 500 次点击的普通链接会显示远超一百种不同的 user agent 字符串,因为浏览器版本、操作系统和设备相乘。500 次点击一个字符串,那是程序、监控工具、坏掉的自动刷新嵌入,或者爬页面上每个链接的机器人。这些都不是客户。

零成交这个条件是让这项检查保持诚实的关键。一位伙伴的受众可能确实严重偏向某一种浏览器,但那个受众还是会偶尔购买。只要链接 30 天内有哪怕一笔成交,检查就不触发,单一字符串的点击被当作噪音而不是作弊。真的触发时,处理和暴增一样:点击从统计和奖励中排除,并告诉伙伴原因。

联盟作弊检测的三项每晚任务

每项检查都是对伙伴计划已有数据的一次查询。它们每晚运行一次,在当天的发票事件落地之后,把标记写到伙伴记录上。每项检查一行。

RelayWonder 上线的三项检查。阈值品牌可调;默认值面向几百位伙伴以内的计划。
检查输入规则默认阈值匹配时的动作
自推自买佣金记录关联伙伴账户归一化后的结账邮箱等于归一化后的伙伴邮箱,或自定义域名等于伙伴网站域名精确匹配移除归因、标记伙伴、冻结打款
点击暴增带时间戳的点击日志任何滚动 10 分钟窗口内的点击超过阈值每 10 分钟 100 次标记伙伴,复核前从统计和奖励中排除点击
死流量带 user agent 的点击日志、成交记录超过 N 次点击共享一个 user agent 且 30 天零成交500 次点击,0 成交标记伙伴,复核前从统计和奖励中排除点击

每晚运行而不是实时运行是有意的选择。一条佣金记录在可付之前已经锁定 30 天,一项在成交后 24 小时内运行的检查有 29 天的余量。实时检查增加复杂度,换来的只是在一笔反正一个月都动不了的钱上早几个小时的标记。

被标记的伙伴会怎样

在这套联盟作弊检测里,一个标记做三件事,别的什么都不做。它出现在品牌控制台里伙伴那一行上,带着触发它的检查和证据(匹配到的邮箱、暴增的窗口、user agent 的计数)。它冻结伙伴的打款:余额留在账本上,标记清除之前不进下一个批次。它给伙伴发一条直白的消息,说哪项检查触发了,打款暂停等待复核。

账本记录本身不被触碰,因为账本只增不改。如果复核认定暴增是真实的爆发,品牌清除标记,伙伴以全额余额进入下一个批次。如果认定流量是买来的,品牌把点击记录为已排除,条款允许的话移除伙伴。无论哪种情况,历史都不会被改写;伙伴十二月的对账单仍然显示六月发生过什么。

预期会有误报,并把每次复核规划在五分钟以内。新伙伴测试自己的链接是最常见的自推自买标记。企业读者众多、统一使用某个托管浏览器版本的 Newsletter,在淡月可能触发 user agent 检查。被大账号提到的产品发布可能用完全真实的点击触发暴增检查。在我们的经验里,小计划的大多数标记都是这几种之一,这就是默认动作是冻结加通知而不是封禁的原因。

这些检查抓不到什么

坦白局限是联盟作弊检测的一部分。这三项检查抓不到:

  • Cookie 塞入,即伙伴的页面给从未点击任何东西的访客种下你的追踪 Cookie,让之后的任何自然购买都归到他名下。只在点击到品牌自有域名时才设置的第一方 Cookie 让这更难,发票级归因让品牌能审计某位伙伴的 Cookie 认领了哪些成交,但发现它需要看每位伙伴转化率随时间的变化,而不是一条每晚的规则。
  • 用无关邮箱的自推自买。用朋友的邮箱和朋友的卡购买的伙伴对邮箱检查是不可见的。30 天锁定期和退款规则限制了损失,唯一的几笔成交共享一个账单地址的伙伴值得看一眼,但没有自动规则能干净地抓住它。
  • 本来就要买的客户用了泄露的优惠码。那是泄露,不是作弊,条款应该写明怎么处理。
  • 盗卡。那是支付层的工作。Stripe Radar 在发票支付前拦截或审核它们,之后成功的拒付会自动成为一条负向账本记录冲回佣金 [1][2]。

对于超过几百位伙伴或者支付按点击奖励的计划,值得加第四个信号:每位伙伴的转化率和计划中位数的比较,每月复核。一位点击是中位数十倍、转化率是中位数十分之一的伙伴在买流量或者塞 Cookie,没有哪条单独的每晚规则能说出这一点。

条款需要的措辞

不在条款里的检查是一场等着发生的争吵。四句话覆盖三项检查。

  • 由你本人或任何代表你的人通过你自己的链接或优惠码完成的购买不计佣金。我们会把购买邮箱和你的账户邮箱比对,包括常见别名。
  • 我们监控点击模式。收到自动化、购买或其他非人类流量的链接,这些点击会从统计和任何按点击的付款中排除。
  • 任一检查被触发时,你的打款会暂停,直到我们复核完毕。我们会告诉你触发了哪项检查以及我们发现了什么。
  • 反复或蓄意违规可能导致被移出计划,并没收因违规产生的未付余额。

第三句里重要的词是暂停。伙伴接受被提前告知的冻结,不接受无声的不付款。RelayWonder 发出的每个标记对伙伴和品牌都可见,并注明检查名称,正是为了这个。

invoice.paid+ $9.80invoice.paid+ $9.80refund− $9.80invoice.paid+ $29.80dispute− $29.80invoice.paid+ $9.80rows are appended, never edited · balance = sum
标记冻结余额,从不修改账本。写下的每一行都留着。

为什么这对大多数计划已经够了

诱惑是把联盟作弊检测当作推迟上线的理由,或者去买一个为市场平台设计的风控产品。对一个有五十到五百位伙伴、从自己的 PayPal 或 Wise 账户付款的品牌,三项检查、30 天锁定期、退款作为负向记录的发票级归因,以及每个批次前对标记的人工复核,几乎覆盖了实际会发生的一切。漏掉的情况造成的损失被锁定期限制住,也被品牌在看过例外之后自己支付每个批次这一事实限制住。这就是设计:三条查询、一个标记、一次暂停、一个人。这是 RelayWonder 上线的东西,也是我们会再造一遍的东西。

FAQ

联盟作弊检测怎么处理真的想买产品的伙伴?

成交正常进行,只是佣金不归因。自推自买检查移除归因并打标记,伙伴收到一条消息,说明自推自买的成交不计佣金。没有任何退单,单次情况也不会移除伙伴。

为什么归一化 Gmail 的点号和加号别名,而不处理其他服务商?

因为 Gmail 的文档说明本地部分的点号被忽略,所以 jane.doe 和 janedoe 是同一个收件箱。大多数其他服务商把点号视为有意义。加号别名几乎所有服务商都支持,所以去掉加号后缀在哪里都安全。在 Gmail 之外应用点号规则会制造错误匹配。

一条真实的视频爆了,触发了点击暴增阈值怎么办?

标记是复核请求,不是处罚。真实的激增显示很多 user agent、很多网络,以及之后几天里的一些成交。品牌清除标记,伙伴在下一个批次得到支付。冻结对伙伴的代价只是短暂的延迟,而消息会告诉他原因。

我能改阈值吗?

能。每 10 分钟 100 次和 500 次零成交这两个默认值适合几百位伙伴以内的计划。有超大创作者的品牌可以提高暴增阈值;支付点击奖励的品牌可以降低死流量阈值。自推自买检查没有阈值,匹配就是匹配。

标记会改账本吗?

不会。账本只增不改。标记把伙伴的余额从下一个批次里扣住,并把相关点击标为从统计中排除。复核清除标记,余额全额支付;没清除,品牌可以移除伙伴,已经写下的记录留作存档。

Sources

  1. Stripe 文档:Radar · 在扣款成功前运行的支付级欺诈评分。
  2. Stripe 文档:争议 · 拒付如何发起和解决;成为负向账本记录的事件。
  3. Gmail 帮助:Gmail 地址中的点号无关紧要 · 确认 Gmail 地址本地部分的点号被忽略。
  4. MDN:User-Agent 头 · user agent 字符串包含什么,以及它为什么在真实浏览器和设备间各不相同。
  5. Stripe 文档:Webhooks · 驱动归因和每晚检查的付款成功、退款和争议事件。
  6. Amazon Associates 运营协议 · 一个被广泛阅读的计划条款范例,禁止自购和人工流量。
话题联盟作弊检测自推自买点击作弊Gmail 邮箱归一化打款冻结机器人流量