目录
一、相关文档
二、后端逻辑梳理
# 初始化验证码相关参数 # 请在官网申请ID使用,示例ID不可使用 pc_geetest_id = "48a6ebac4ebc6642d68c217fca33eb4d" pc_geetest_key = "4f1c085290bec5afdc54df73535fc361" mobile_geetest_id = "48a6ebac4ebc6642d68c217fca33eb4d" mobile_geetest_key = "4f1c085290bec5afdc54df73535fc361" # 第一次后端校验,用于验证码的生成 @app.route('/pc-geetest/register', methods=["GET"]) def get_pc_captcha(): # 用户标识,若担心用户信息风险,可作预处理(如哈希处理)再提供 user_id = 'test' gt = GeetestLib(pc_geetest_id, pc_geetest_key) # 初始化结果标识status(status=1表示初始化成功,status=0表示宕机状态)需要用户保存,在后续二次验证时会取出并进行逻辑判断。 status = gt.pre_process(user_id) session[gt.GT_STATUS_SESSION_KEY] = status session["user_id"] = user_id response_str = gt.get_response_str() # {"success": 1, "gt": "48a6ebac4ebc6642d68c217fca33eb4d", "challenge": "f320ead2467b8132dbb5a91042748dbb"} return response_str # 第二次校验,接受前端三个参数 # 当取出status=0时表示极验宕机,此时流程进入failback模式,后续逻辑都是在您的服务器完成,不会再向极验服务器发送网络请求。 # 本SDK demo中,对于failback模式,只对请求参数做了简单的校验,您也可以自行设计。 @app.route('/pc-geetest/validate', methods=["POST"]) def pc_validate_captcha(): print(request.form) gt = GeetestLib(pc_geetest_id, pc_geetest_key) challenge = request.form[gt.FN_CHALLENGE] validate = request.form[gt.FN_VALIDATE] seccode = request.form[gt.FN_SECCODE] status = session[gt.GT_STATUS_SESSION_KEY] user_id = session["user_id"] if status: result = gt.success_validate(challenge, validate, seccode, user_id) print(result)