昨天五月天的票一出来,朋友圈一片凄风苦雨,每个人都在哀嚎没有抢到票

杭州五月天演唱会门票背后的黑灰产防范技术剖析

现在我们满世界在抵抗黄牛,但是就黄牛的手法,咱可差远了

杭州五月天演唱会门票背后的黑灰产防范技术剖析

“黄牛”还有一单个称是“黑灰产”,而黑灰产从业者具有较强的组织性、传达性和信息感知度。以营销活动脚本作弊场景为例,黑灰产乱用平台的各种营销活动机制,如新人奖励、用户裂变拉新奖励、签到奖励、秒杀优惠等,利用批量账号和自动化软件脚本(发生很多机器流量),绕过平台设定的限制规矩,以积少成多的方法,很多地获取营销活动礼包, 然后将现金集合到统一账号,或将红包、优惠券、电子券等以不同方法进行变现获利。并且黑灰产逐渐形成一条分工清晰、协作紧密的黑灰工业链条。

杭州五月天演唱会门票背后的黑灰产防范技术剖析

实名制

现在主办方采取的首要手法是实名制,我们来看看一般实名制的手法是什么:

from flask import Flask, render_template, request, session
app = Flask(__name__)
app.secret_key = 'your_secret_key'
# 模拟已注册用户信息
registered_users = {
    'user1': {
        'name': '张三',
        'id_number': '1234567890'
    },
    'user2': {
        'name': '李四',
        'id_number': '9876543210'
    }
}
@app.route('/')
def home():
    return render_template('home.html')
@app.route('/buy_tickets', methods=['POST'])
def buy_tickets():
    # 获取用户输入的名字和身份证号码
    name = request.form['name']
    id_number = request.form['id_number']
    # 查看用户信息是否匹配
    for user, info in registered_users.items():
        if info['name'] == name and info['id_number'] == id_number:
            # 用户信息匹配,履行购票逻辑
            # TODO: 在此处编写购票逻辑的代码
            return "购票成功!"
    # 用户信息不匹配,提示用户从头输入
    return "名字和身份证号码不匹配,请从头输入!"
if __name__ == '__main__':
    app.run()

实名制购票要求购票者供给有效身份证明,并将购票者的名字与身份证信息进行核对。这样能够保证每个人只能购买必定数量的门票,减少黄牛批量购票的可能性。

但是即使是这种情况,还是不能避免大部分人抢不到票。

验证码

另一个方法是在验证码阶段来卡黄牛。如前面的图所示,黄牛可能会运用物理手法来抢票,这个过程假如我们设置一个验证码的门槛,是能够刷掉大部分的机器流量的:

from flask import Flask, render_template, request, session
import random
app = Flask(__name__)
app.secret_key = 'your_secret_key'
# 生成验证码
def generate_captcha():
    captcha = ''
    for _ in range(6):
        captcha += str(random.randint(0, 9))
    return captcha
@app.route('/')
def home():
    # 生成验证码,并存储在session中
    captcha = generate_captcha()
    session['captcha'] = captcha
    return render_template('home.html', captcha=captcha)
@app.route('/buy_tickets', methods=['POST'])
def buy_tickets():
    # 获取用户输入的验证码
    user_captcha = request.form['captcha']
    # 获取存储在session中的验证码
    stored_captcha = session.get('captcha')
    if user_captcha == stored_captcha:
        # 验证码验证成功,履行购票逻辑
        # TODO: 在此处编写购票逻辑的代码
        return "购票成功!"
    else:
        # 验证码验证失败,提示用户从头输入
        return "验证码错误,请从头输入!"
if __name__ == '__main__':
    app.run()

排队购票体系

排队购票体系是整个购票体系的基础,让用户按照顺序进入购票页面。这样能够避免黄牛运用快速抢票软件或脚本,保证每个用户都有公正的机会购票。

from flask import Flask, render_template, request, session, redirect
import time
app = Flask(__name__)
app.secret_key = 'your_secret_key'
# 模拟排队行列
queue = []
@app.route('/')
def home():
    if 'user' not in session:
        # 用户未进入排队行列,将其参加行列
        session['user'] = str(time.time())
        queue.append(session['user'])
    return render_template('home.html')
@app.route('/buy_tickets', methods=['POST'])
def buy_tickets():
    # 查看用户是否在行列头部
    if 'user' in session and session['user'] == queue[0]:
        # 用户在行列头部,履行购票逻辑
        # TODO: 在此处编写购票逻辑的代码
        return "购票成功!"
    # 用户不在行列头部,重定向到主页等待
    return redirect('/')
if __name__ == '__main__':
    app.run()

结语

其实,粉丝们再怎么抗拒黄牛,黄牛都是“野火烧不尽,春风吹又生”,只能是主办方从技术手法上尽可能降低黄牛的风险,然后保证广阔粉丝公正买票的权益。

如需求免费的验证码产品,请戳>>>顶象验证码