黄牛为什么能抢走“五月天”的门票?

Posted 顶象技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了黄牛为什么能抢走“五月天”的门票?相关的知识,希望对你有一定的参考价值。

随着文娱活动的复苏,大量黄牛“卷土袭来”。顶象防御云业务安全情报中心发现,五月天即将开启内地巡演,北京鸟巢演唱会、深圳演唱会陆续官宣。五月天演唱会门票等,遭遇大量黄牛。

“史上最难抢票”的五月天演唱会

5月10日,五月天2023“好好好想见到你”演唱会深圳场正式官宣,且将在13日开启三场预售。为了抢到门票,粉丝们“奇招频出”。有人动用了手机、iPad、电脑等五六台设备;有人断开Wi-Fi,全程用5G抢票;有人叫上亲朋好友,十几号人齐上阵。在售票平台页面上,有超过230万人表示“想看”五月天北京演唱会。

演唱会的门票,同步在多个平台销售。开售后,将近30万张演出票几乎“秒没”,而黄牛却在社群和朋友圈加价出售门票。在电商平台搜索“五月天北京演唱会”时发现,数十家票务商家正在销售门票。这些商家大多醒目地标注着“正品保真”“100%出票”等标识。门票价格则按照座位顺序从几百元到数千元不等,这些门票的黄牛价比票面高了不止一倍,黄牛倒买倒卖的行径成为众矢之的。

粉丝称之为“史上最难抢票”的五月天演唱会,黄牛是如何抢到票的呢?

黄牛为什么能抢到票

顶象防御云业务安全情报中心分析分发现,黄牛之所以手中能握有大量演唱会门票,除了研发专门用于抢票的软件,可以在售票开启第一时间抢到大量门票,甚至还形成较完整的抢票产业链。

抢票拼的是速度,黄牛为什么比粉丝更容易抢到?主要是因为下单速度不同。同样一件商品,A比B早1秒钟,则A能够购买到,B则无法购买到。在下单速度方面,人靠的是神经反应,而软件是基于预先设置流程,因此运行速度远超过人,抢购成功率远远高于普通消费者。

黄牛就是通过作弊工具,进行批量注册登录抢购等操作,从而快速、瞬时、批量对指定商品、服务进行哄抢。同时作弊工具集成破解功能,能破解电商下单协议,绕过图片验证码,自动更换IP地址,伪造设备编号等。只需要填写好账号密码,设置好运行时间,就能够完成自动抢购,省时省力又省钱。

黄牛抢票带来哪些坏影响

黄牛抢购门票的行为会导致门票的供求失衡,引发市场价格的不合理上涨,增加公众的票务成本。此外,黄牛的恶意抢票还会破坏正常的购票机制和秩序,导致普通用户无法获取门票,从而增加票务的不公平性和不透明性。

消耗平台服务器资源。为了抢购门票,黄牛注册大量账户,并同时发起抢购请求,导致服务器资源过载,进而影响正常用户的购票体验,形成DDoS攻击的效果。

泄露用户隐私信息。黄牛为了注册账号、抢票,需要使用大量实名信息,这些信息都是通过非法手段获取,包括用户的个人信息、购票记录等。这可能导致用户信息泄露,增加平台的安全风险。

影响售票平台口碑信誉。黄牛利用技术或其他手段在最短时间内抢购大量门票,导致正常购票用户无法获得门票,从而造成公平竞争不足的状况。然后通过加价出售的获取更多的利益,导致消费者因为价格不合理而失去对售票平台的信任和支持,甚至可能放弃使用该平台服务,造成口碑损失和经济损失。

无法保障消费权益。由于黄牛以更高价格售出,不仅扰乱了市场价格,更让消费者的支出高出一大截。而且黄牛兜售的门票是非法手段获得,消费者购买后的权益无法得到保障。一旦在票源出现问题时,难以得到平台和官方的支持和维护,从而可能引发投诉和纠纷。

黄牛的存在不仅破坏了市场的公平竞争,而且也影响了售票平台、消费者的利益。售票平台应该采取相应的技术和管理手段,加强对黄牛的打击和监管,保障消费者权益。

售票平台为什么挡不住黄牛?

售票平台规则繁杂、漏洞多。漏洞是威胁的爆发源头,无论是病毒攻击还是黑客入侵大多是基于漏洞,软件漏洞、接口漏洞、管理漏洞等等。售票业务中涉及到的优惠系统、客户系统等,规则使用上互相重叠漏洞很多,业务风险点多,账户、订单等各系统均有可能出现漏洞,单点防控难度大。

黄牛人数多、专业程度高。黄牛彼此分工明确、合作紧密、协同作案,形成一条完整的产业链。他们熟悉各项业务流程,了解企业的需求、风控规则及业务漏洞,能够娴熟的运用移动互联网、云计算、人工智能等新技术进行业务欺诈操作。

欺诈手段复杂多变,单点防护失效。黄牛手握大量账号,同时熟练使用秒拨IP、模拟器等专业工具不断更新,新手段层出不穷,平台对抗难度大。

攻击来源复杂,识别和防御难度大。相较于个体欺诈,团伙欺诈行为更难侦测和识别,传统的反欺诈工具无法从全局视角洞察欺诈风险。业务风险欺诈不断变化,手段更迭快速,新攻击手段对既有的防控措施进行了调整甚至免疫,传统措施不能及时对新风险进行识别和预警。而且网购平台很多业务安全流程上很容易互相矛盾,甚至相互打架, 一旦出现误判,将直接影响订单交易。

管理上如何有效防控黄牛

采取实名认证机制。通过售票平台实名认证,绑定手机号、身份证等信息,验证购票者的真实身份,防止黄牛从机器人大量抢票。

实施随机购票机制。通过随机购票、订单限额等措施,避免黄牛批量刷票。

多渠道销售门票。采取线上、线下多渠道销售门票,尽量满足广大用户的需求,而不是让黄牛占据优势。

加强监管打击。联合监管部门加强对黄牛的打击力度,维护市场秩序,保障消费者合法权益。

提高用户意识。提高消费者的安全意识和警惕性,不要相信个人或第三方售票平台的高价门票,购票要选择正规售票平台,并留存好购票记录。

技术上如何有效防黄牛

基于黄牛的特征和业务防护策略,顶象防御云业务安全情报中心建议票务平台需构建一个覆盖多渠道全场景,提供多阶段防护的安全体系。该体系打通平台的前台、中台和后台,覆盖各渠道平台和各业务场景,提供威胁感知、安全防护、数据沉淀、模型建设、策略共享等安全服务,能够满足不同业务场景,拥有各行业策略且能够基于自身业务特点实现沉淀和更迭演进,实现平台的精准防控。

事前

1、分别从业务规则、业务逻辑、业务安全防控措施、业务安全应急预案等方面做好评估和准备,保证业务和系统的公平性。例如,业务系统上缺少安全组件,在上线时就需要增加安全组件的使用。提前准备应急预案,一旦发现业务有漏洞或被恶意访问,可以及时快速进行应急预案,应用提前制定好的规则,进行防护。

2、基于业务安全情报,发现新风险新变化,帮助企业加速对行业中新型威胁的布防速度和能力,帮助企业提前获取黑灰产发动威胁的工具、路径、意图等信息,勾勒出攻击者画像。

事中

1、建立在线热部署等布控能力。攻击来袭时,持续对账户行为进行分析,并根据策略情报和风险数据进行实时应用和判定,一旦发现异常及时拦截,并及时更新调整规则和策略。

2、通过业务监控,来实时观察业务进行中的数据情况,便于及时发现异常情况,进行针对性处理。

事后

1、基于每日的业务数据进行分析,发现隐藏的异常。

2、沉淀每日的风险数据,挖掘攻击特征,利用每日风险数据、交易数据、安全策略,进行升级更迭,调整风控引擎和风控模型。

3、定期对业务大数据做深度挖掘,通过关联网络技术发现潜在隐患和团伙,防范新的威胁攻击。

4、此外,完成线上安全运营策略和模型的迭代闭环。针对用户的投诉、举报、案件等反馈信息,结合沉淀的业务数据和风险数据,将迭代的模型和风险名单,应用安全决策系统中,实现完整的业务闭环,不断完善平台的安全体系。

相关技术产品推荐

1、顶象业务安全情报。顶象业务安全情报拥有 30000+风险源,包含来自对黑灰产社区社群、暗网论坛、违法违禁网站和App的监测,以及打码平台、众包平台、行业非风险数据的共享等。基于对风险数据的人群画像、行为评分、关联关系分析、团伙欺诈挖掘、场景风险特征分析,以及专家专业经验的判断和定位后,提炼总结分析出电信诈骗风险、IP地址风险、设备风险、涉毒涉诈风险、交易风险以及不同行业风险的业务安全情报,为安全人员提供及时、准确、有效的情报内容,帮助安全人员系统掌握业务安全态势、威胁路径、影响范围等,分析挖掘出攻击特征、潜在隐患,从而及时有效提升安全应急响应能力,制定科学有效的防控策略。

2、顶象智能验证码。顶象无感验证以防御云为核心,集13种验证方式,多种防控策略,以智能验证码服务、验证决策引擎服务、设备指纹服务、人机模型服务为一体的云端交互安全验证系统。其汇集了4380条风险策略、112类风险情报、覆盖24个行业、118种风险类型,防控精准度>99.9%,1天内便可实现从风险到情报的转化,行业风险感知能力实力加强,同时支持安全用户无感通过,实时对抗处置能力更是缩减至60s内。

3、顶象端加固。作为顶象防御云的一部分,顶象端加固支持安卓、iOS、H5、小程序等平台,独有云策略、业务安全情报和大数据建模。基于防御云,顶象端加固能够为App提供移动应用运行进行安全监测,对移动应用运行时终端设备、运行环境、操作行为进行实时监测,帮助App建立运行时风险的监测、预警、阻断和溯源安全体系。

4、顶象设备指纹。作为顶象防御云的一部分,顶象设备指纹集成了业务安全情报、云策略和数据模型,通过用户上网设备的硬件、网络、环境等特征信息生成设备的唯一标识,覆盖安卓、iOS、H5、小程序,可有效识别模拟器、刷机改机、Root、越狱、劫持注入等风险,做到有效监控和拦截。

5、顶象风控引擎。顶象Dinsight实时风控引擎可以在营销活动、支付下单、信贷申请等场景,对业务前端发送的请求进行风险判断,并于毫秒内返回决策结果,以提升业务系统对风险的防控能力。日常风控策略的平均处理速度仅需20毫秒,聚合数据引擎,集成专家策略,支持对现有风控流程的并行监测、替换升级,也可为新业务构建专用风控平台;聚合反欺诈与风控数据,支持多方数据的配置化接入与沉淀,能够进行图形化配置,并快速应用于复杂策略与模型;能够基于成熟指标、策略、模型的经验储备,以及深度学习技术,实现风控自我性能监控与自迭代的机制;集成专家策略,基于系统+数据接入+指标库+策略体系+专家实施的实战;支持对现有风控流程的并行监测、替换升级,也可为新业务构建专用风控平台。

6、顶象模型平台。基于关联网络和深度学习技术的Xintell智能模型平台,结合Hadoop生态和自研组件,将复杂的数据处理、挖掘、机器学习过程标准化,提供从数据处理、特征衍生、模型构建到最终模型上线的一站式建模服务,结合拖拉拽式操作大幅降低建模门槛,提升建模工程师、数据科学家的工作效率,让运营人员和业务人员也能直接上手操作实践,帮助企业通过对大数据的模型训练在反欺诈、风控、营销、客户分群等场景提供模型支持,并能够根据时间变化进行动态升级与优化,极大降低建模和模型管理门槛。

业务安全大讲堂:立即报名

业务安全产品:免费试用

业务安全交流群:加入畅聊

一文读懂Java中的代理模式

代理(Proxy)模式是我们在工作中广泛使用的设计模式之一,提供了对目标对象额外的访问方式。通过代理对象来访问目标对象,可以对目标对象进行功能的增强,即扩展目标对象的功能。例如在Spring中,AOP就是使用动态代理来实现的。

举个栗子,当我们买不到演唱会门票时,只能通过找黄牛替我们买票,将买票这一过程交给他们去代办。在这一环节中,我们不接触到真正的购票公司,黄牛就相当于是代理。目标对象购票公司提供一个代理对象黄牛,通过黄牛可以调用购票公司的部分功能(买票),并添加一些额外的业务功能(交额外的手续费)。

JAVA中实现代理的存在两种方式,下面分别对其进行介绍。

一、静态代理

从创建时期来看,静态代理是由程序员创建或特定工具自动生成源代码再对其编译。在程序运行前代理类的class文件就已经存在了。 从实现方式来看,又可分为继承和聚合两种方式。通过代理类的对象调用重写的方法时,实际上执行的是被代理类同样的方法的调用。

1、继承方式

代理类继承目标类,重写目标类中需要增强的方法:

//售票公司
public class TicketCompany 
    public void sellTicket()
        System.out.println("售票");
    


//黄牛
public class TicketScalper extends TicketCompany
    @Override
    public void sellTicket() 
        super.sellTicket();
        System.out.println("收手续费");
    

2、聚合方式

代理类和目标类实现同一个接口,代理对象当中要包含目标对象。代理类中通过注入目标类的对象,然后重写方法进行功能增强。

public interface Company 
    public void sellTicket();


//售票公司
public class TicketCompany implements Company
    @Override
    public void sellTicket()
        System.out.println("售票");
    


//黄牛
public class TicketScalper implements Company
    TicketCompany ticketCompany;
    public TicketScalper( TicketCompany ticketCompany)
        this.ticketCompany=ticketCompany;
    
    @Override
    public void sellTicket() 
        ticketCompany.sellTicket();
        System.out.println("收手续费");
    

通过以上两种静态代理方式,可以做到在不修改目标对象的功能前提下,对目标功能进行扩展。但是也存在一些缺点,每当我们需要扩展目标类的功能时,就需要重写一个代理类,容易造成代理类过多,项目结构复杂。此外,一旦接口增加方法,目标对象与代理对象都要维护。

总结:如果在不确定的情况下,尽量不要去使用静态代理。因为一旦写代码,就会产生类,容易造成文件规模的大量增长。那么如何解决这些缺陷呢?我们使用动态代理。

二、动态代理

在静态代理中,一个代理对象只能代理一个目标对象,并且在编译时就已经确定代理逻辑。而动态代理是在运行时,通过反射机制动态创建而成,并且能够代理各种类型的对象。而动态代理也存在两种方式,JDK动态代理与CGLIB代理。

1、JDK动态代理

Java中的Proxy类,提供了newInstance静态方法可以动态生成代理对象。

先看看代码实现:

public class TicketScalperJdkProxy 
    public static void main(String[] args) 
        TicketCompany ticketCompany = new TicketCompany();
        Company company =(Company) Proxy.newProxyInstance(ticketCompany.getClass().getClassLoader(),
                ticketCompany.getClass().getInterfaces(),
                new InvocationHandler() 
                    @Override
                    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable 
                        if(method.getName().equals("sellTicket"))
                            System.out.println("黄牛收取手续费");
                        
                        return method.invoke(ticketCompany, args);
                    
                );
        company.sellTicket();
    

newProxyInstance方法中传入的三个参数,依次为:

  • ClassLoader loader:指定当前目标对象使用类加载器,一般使用目标对象的类加载器
  • Class<?>[] interfaces:目标对象实现的接口的类型,使用泛型方式确认类型
  • InvocationHandler h:事件处理,执行目标对象的方法时,会触发事件处理器的方法,会把当前执行目标对象的方法作为参数传入,通过其中的invoke方法进行功能的增强

从传入的第二个参数中,可以发现,要实现JDK动态代理,目标对象必须实现一个接口,才能对接口中的方法进行代理。那么如果没有实现接口呢?CGLIB为我们提供了另一种方式。

2、CGLIB代理

JDK动态代理虽然简单易用,但是只能对接口进行代理。如果被代理的类是一个普通类没有接口,那么JDK动态代理就没法使用了,这时就可以使用CGLIB基于继承来实现代理。

CGLIB(Code Generator Library)是一个强大的、高性能的代码生成库。底层使用了ASM(一个短小精悍的字节码操作框架)来操作字节码生成新的类。

使用CGLIB来实现功能增强:

public class CglibTest 
    public static void main(String[] args) 
        Enhancer enhancer=new Enhancer();
        enhancer.setSuperclass(TicketCompany.class);
        enhancer.setCallback(new MethodInterceptor() 
            @Override
            public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable 
                System.out.println("收手续费");
                Object result = methodProxy.invokeSuper(o, args);
                System.out.println("完成交易");
                return result;
            
        );
        TicketCompany sampleClass=(TicketCompany) enhancer.create();
        sampleClass.sellTicket();
    

需要注意的是,目标类不能为final,目标对象的方法如果为final / static,那么就不会被拦截,即不会执行目标对象额外的业务方法。

最后顺带看一下Spring AOP中使用的代理。在Spring中,通过注解来开启AOP时,默认使用的代理方式为JDK动态代理

@Configuration
@EnableAspectJAutoProxy()
public class AppConfig 

使用debug看一下获取的代理对象:

修改@EnableAspectJAutoProxy注解中proxyTargetClass的属性,可以将其替换为CGLIB代理方式

@Configuration
@EnableAspectJAutoProxy(proxyTargetClass=true)
public class AppConfig 

再看一下代理对象,已经变为使用CGLIB代理方式:

总的来说,JDK动态代理使用Java原生的反射API来进行操作,在生成类上比较高效;CGLIB使用ASM框架直接对字节码进行操作,在类的执行过程中比较高效。至于具体的使用,更多还要取舍于我们的应用环境,还是那句话,没有最好的技术,只有更适用的业务场景。

最后

以上是关于黄牛为什么能抢走“五月天”的门票?的主要内容,如果未能解决你的问题,请参考以下文章

迪士尼开票首日门票秒杀系统崩溃 黄牛票近千元

买票难?黄牛多?XFS或能终结

一文读懂Java中的代理模式

人工智能来了,医生的饭碗会被抢走吗?

人工智能会抢走哪些人的工作

五月天·人生无限公司(上海)行程记录