阿里图像修复验证码自动化分析

声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包 内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!侵权通过头像私信或名字简介叫我删除博客谢谢。
部分python代码

复制代码
@app.route('/solve_captcha', methods=['POST'])
def api_solve_captcha():
    """
    POST 接口,接收 JSON:
    {
       
    }
    """
    data = request.get_json(force=True) or {}
    token = data.get('token', '')
    group_id = data.get('groupId', '')
    uid = data.get('uid', '')

    if not token or not group_id or not uid:
        return jsonify({"code": 400, "message": "缺少必要参数: token, groupId, uid", "success": False, "data": None})

    local_storage = build_local_storage(token, group_id, uid)

    try:
        page = init_browser()
        page.get(TARGET_URL)
        page.wait(2, 4)

        inject_env(page, local_storage, '')
        page.wait(2, 4)
        page.get(TARGET_URL)
        page.wait(2, 4)

        result = solve_captcha(page)

        cookies_dict = {}
        cookies_raw = page.run_js("return document.cookie")
        if cookies_raw:
            for c in cookies_raw.split('; '):
                if '=' in c:
                    k, v = c.split('=', 1)
                    cookies_dict[k] = v

        local_storage_dict = page.run_js("""
            let data = {};
            for (let i = 0; i < localStorage.length; i++) {
                let key = localStorage.key(i);
                data[key] = localStorage.getItem(key);
            }
            return data;
        """)

        response_data = {
            "code": 200 if result["success"] else 500,
            "message": result["message"],
            "success": result["success"],
            "data": {
                "cookies": cookies_dict,
                "localStorage": local_storage_dict
            }
        }
    except Exception as e:
        response_data = {"code": 500, "message": str(e), "success": False, "data": None}
    finally:
        try:
            page.quit()
        except Exception:
            pass
    return jsonify(response_data)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000, debug=False)

结果

总结

1.出于安全考虑,本章未提供完整流程,调试环节省略较多,只提供大致思路,具体细节要你自己还原,相信你也能调试出来。

2.具体更多细节请看名字进入详情了解更多细节,具体细节要你自己还原,相信你也能调试出来。

相关推荐
石小石Orz4 分钟前
民间AI排行榜单新鲜出炉,Fable 5.1仅排第三
前端·后端·ai编程
FYKJ_201012 分钟前
【毕设分享】基于Web的校园兼职信息发布与申请系统07059
前端·vue.js·spring boot·mysql·typescript·spark·课程设计
本人手速666+16 分钟前
WeComApi 如何支撑企业微信自动回复系统:从消息回调到人工接管
自动化·企业微信·企微·企微外部群开发·wecomapi·企业微信二次开发·企微api
Lyyaoo.22 分钟前
【动态规划】【待更新】
java·数据结构·算法
我不会起名字32231 分钟前
一天一道算法题(35):电话号码的字母组合
java·数据结构·后端·python·leetcode·go·回溯
麻瓜code33 分钟前
【JUC】基础:并发模型、锁机制与 JMM
java
曹牧36 分钟前
SpringBoot: @RequestBody String
java
爱划水不秃头的程序员1 小时前
堆 栈 和常量池的关系是啥 是jvm对他们进行的划分吗
java
周GZ1 小时前
4个提问,deepseek讲解Java中的线程池
java
LuTshoes1 小时前
context 上下文工程
java·人工智能·spring·ai