Amex referral link破解

总结:此方法不但能刷到大offer,应该还能破referral jail,但是真刷起来的话时间很长,且存在较大风险。

引用@BMW:

本帖只作为交流讨论使用。不鼓励这种类似于网络攻击的行为

众所周知,Amex总会给一部分用户发大offer的refer,比如150k的白金link和90k的金卡link,这些link是泥潭福利贴的入场券,但有没有这样的link全看Amex爸爸给不给你这个机会。
然而最近一次Amex不小心给几乎所有人都发了高额奖励的referral link(后来又全部claw back变成了垃圾offer link)让我对这种link是怎么生成的产生了兴趣。

声明:以下内容为个人经验总结,若有错误之处还烦各位指正

1. Amex referral link的结构

所有的amex referral link似乎都share同一个格式。有多张amex卡的坛友可以仔细观察一下自己几张卡的referral link,会发现amex的link实际上存在很强的规律性。以手机app generate出来的referal link 为例,通用格式如下:

https://americanexpress.com/en-us/referral/XXXXXYaaaa?XL=BBBBB

大家可以对照着看看自己手机app生成的referral是不是这个格式。
其中,XXXXX为First name前五位,若名字不足五字则为完整first name。Y为Last name的首字母。BBBBB猜测为device ID,一般为4-5位大写字母。疑似同一个设备(app和不同的浏览器算不同设备) generate出来的link共享同一个device ID,即使是两个不同的账户但不能反推device ID 相同的link由同一个设备生成。 device ID前面可能为XL=也可能为XLINK=,YMMV。

为了刷出大offer,我们最关心的是aaaa这个四位code。该四位code为大写字母,小写字母和数字的随机组合。目前观察,这四位code不但决定了referral link是哪个产品的,也决定了是小offer还是大offer,可惜的是无法通过code直接推断以上信息,只能试错。初步猜测是这四位code是对某个数据库的query。所以,假如我们可以穷举这四位数字,就意味着我们能找到想要的大refer offer。

2. 穷举法的困难及其解决

要穷举4位code大小写字母+数字的组合,一共需要 (26 + 26 + 10) ^4 = 62 ^ 4 = 14776336次尝试。这显然不是一个小数。当然,以当前计算机的速度来看,也并不是不可能完成的任务。但scale并不是这个问题的唯一困难。

要做穷举,第一个问题是用什么方法。手改link一个一个去访问,显然不现实。你可以使用python的request。直接用Curl命令也可以达到一样的效果。

在实验中发现,输入一个不存在的link并不会导致404,而是会一样返回code 200.只不过返回的内容不同。而从返回的内容虽然不能直接判断一个offer是否是大offer,但可以通过返回值第8行判断这个link是针对的是哪一张卡(例如白金卡的referral link返回值第8行会有“Enjoy the benefits of the American Express® Platinum Card”的字样)。

而如果是个错误的link,返回值则是

<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>

这个信息已经足够帮助我们filter出所有有用的link了。那么穷举的思路就是,找出所有有效的link,再手动访问有效link是否是大offer。

既然要穷举,那么不可避免地要向amex的服务器发送大量的request。这里就出现了第二个困难,那就是Amex的网关。一般来说,当你短时间内向Amex服务器发送了大约5万次request之后,你就会被Amex封IP,而且一封就是好几天。理论上你需要一个能自动换IP的程序。VPN可以达到类似的效果。

最后,穷举法还有两个问题,我其实没有找到解决方案。

第一是同名用户的问题。因为link中对用户的identifier只有前五位名+一位姓,那么假如你的名字很常见,chances are 会有跟你同名的amex 用户。而且你无法确定某个link对应的是你的amex账户,甚至点进去那个link的时候它也只会显示first name referred you to xxx。不过这个对我们国人来讲算是小问题,因为同名同姓的不多见。

第二是多持问题。同样的,referral link中没有任何的identifier告诉你某个link对应的是你的哪一张卡,那么对于多持白金or多持金卡的用户,假如你已经有一张refer满了,你是不知道哪个link对应的是另一张卡的,只能试错。好在大offer link本身非常稀有,可以一个个拿来试错。

3.一些奇怪的现象

穷举的过程中我发现一些挺有意思的现象。比如在用platinum作为关键字穷举时,不但找到了个人白对应的链接,还找到了delta plat和商业白对应的链接。即使用户只持有个人白。一种可能是碰到了同名且姓的首字母一样的人持有了那两张卡。还有一种可能,就是实际上不论你持有哪些卡,amex的系统中有它所有产品对应的链接!如果是后者那么就很有意思了,假如refer了一张我从来没有持有过的卡,会被amex杀全家吗? :yaoming:

还有一个发现,就是改变referral link的后五位device code并不会影响offer的内容。这也验证了我之前的猜想,即大offer or 小offer只和中间的四位code有关。

引用一下楼下大神的方法,可以在穷举的同时直接filter大offer,无需之后手动访问

59 个赞

:yaoming:看到这点我不知该如何说

8 个赞

:cow::cow::cow::cow:

1 个赞

跑完1400万个之后会不会被标记……
:yaoming:

5 个赞

:cow2: :beer: :cow2: :beer:

4 个赞

相比于什么JAMESS可是少多了……

2 个赞

最关键的问题貌似没说,你用这个script生成了amex官网没有的refer链接吗?而且是大offer。

4 个赞

所以楼主发现的四位code能分享一下吗,还是说不同的人的四位code都不一样?

3 个赞

生成的是新的。就是之前从来没有在我account里面出现过的。最好的证据就是我在穷举的过程中找到了三四个150k(无$200)的offer,而我之前是从来没有被amex target到这种大offer的

3 个赞

新的offer里面有比account里更大的offer吗?

1 个赞

钛金大佬又出新品

4 个赞

是的,看我楼上回复

3 个赞

:fire::fire::fire::fire:

1 个赞

应该不会,别人发给你链接之后你可以往上面的一级菜单点,有其他的卡可以选的,我朋友就是给我发了个商业铂然后我稍微刷刷申了130K商业金

2 个赞

同名同姓,同在美国而且还要在amex和你持有相同的卡片的……我觉得概率很小吧。相比之下,我ld的美国人名字……我才穷举了30万个就发现了几十个link,这方法根本不可行。可能Amex使用First name作为link的identifier也是因为美国人同名的太多,不怕穷举吧

1 个赞

这时 某个挂壁看着突如其来的 25k referral bonus 一脸莫名其妙

3 个赞

火钳刘明

2 个赞

就怕流氓有文化会写码 :guile:

3 个赞

不同人的都是不一样的

5 个赞

蹲。

1 个赞