吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 11525|回复: 54
收起左侧

[Python 转载] 利用python机器学习算法成功破解12306验证码

  [复制链接]
骄傲的稻草人 发表于 2019-9-12 09:00
本帖最后由 骄傲的稻草人 于 2019-9-12 09:04 编辑

感谢群里大佬提供的训练好的模型模具,成功攻破12306验证码
懂点python基础的友友,思路一目了然。
简单写了一个测试网站和接口文档,大家感兴趣的可以去试试,

由于服务器配置低,经不住高并发,还望不要频繁请求,
废话少说,测试地址奉上:

http://39.106.103.30:8000/test
使用教程:
将12306图片验证码拖拽到网页中,稍等一会自动识别结果
拒绝伸手党!

下步正在更新GUI桌面开发和12306服务器的CDN接入,
更新完成后发布,保证大家回家都能抢到票。
2.jpg
1.jpg
下面代码奉上:
[Python] 纯文本查看 复制代码
# coding: utf-8
import sys

import cv2
import numpy as np
from keras import models

import pretreatment
from mlearn_for_image import preprocess_input


def get_text(img, offset=0):
    text = pretreatment.get_text(img, offset)
    text = cv2.cvtColor(text, cv2.COLOR_BGR2GRAY)
    text = text / 255.0
    h, w = text.shape
    text.shape = (1, h, w, 1)
    return text


def main(fn):
    # 读取并预处理验证码
    img = cv2.imread(fn)
    text = get_text(img)
    imgs = np.array(list(pretreatment._get_imgs(img)))
    imgs = preprocess_input(imgs)

    # 识别文字
    model = models.load_model('model.v2.0.h5')
    label = model.predict(text)
    label = label.argmax()
    texts = ['打字机', '调色板', '跑步机', '毛线', '老虎', '安全帽', '沙包', '盘子', '本子', '药片', '双面胶', '龙舟', '红酒', '拖把', '卷尺',
             '海苔', '红豆', '黑板', '热水袋', '烛台', '钟表', '路灯', '沙拉', '海报', '公交卡', '樱桃', '创可贴', '牌坊', '苍蝇拍', '高压锅',
             '电线', '网球拍', '海鸥', '风铃', '订书机', '冰箱', '话梅', '排风机', '锅铲', '绿豆', '航母', '电子秤', '红枣', '金字塔', '鞭炮',
             '菠萝', '开瓶器', '电饭煲', '仪表盘', '棉棒', '篮球', '狮子', '蚂蚁', '蜡烛', '茶盅', '印章', '茶几', '啤酒', '档案袋', '挂钟', '刺绣',
             '铃铛', '护腕', '手掌印', '锦旗', '文具盒', '辣椒酱', '耳塞', '中国结', '蜥蜴', '剪纸', '漏斗', '锣', '蒸笼', '珊瑚', '雨靴', '薯条',
             '蜜蜂', '日历', '口哨']
    text = texts[label]
    print(text)
    # 获取下一个词
    # 根据第一个词的长度来定位第二个词的位置
    if len(text) == 1:
        offset = 27
    elif len(text) == 2:
        offset = 47
    else:
        offset = 60
    text = get_text(img, offset=offset)
    if text.mean() < 0.95:
        label = model.predict(text)
        label = label.argmax()
        text = texts[label]
        print(text)

    # 加载图片分类器
    model = models.load_model('12306.image.model.h5')
    labels = model.predict(imgs)
    labels = labels.argmax(axis=1)
    for pos, label in enumerate(labels):
        print(pos // 4, pos % 4, texts[label])


if __name__ == '__main__':
    main(sys.argv[1])
# 运行方式 python3  main.py  <img.jpg>

训练好的模型地址奉上:
链接: https://pan.baidu.com/s/1-Q-084F5g_ga1LXdBto-6w 提取码: rnrf

免费评分

参与人数 19吾爱币 +17 热心值 +18 收起 理由
hahazz + 1 大神能再发下模型链接么
clice + 1 我很赞同!
jiejie1 + 1 我很赞同!
wxkeno + 1 + 1 我很赞同!
icom + 1 楼主链接失效了,麻烦补一下
1154h + 1 + 1 大佬呀!不知能否上传到github
风云使者 + 1 + 1 谢谢@Thanks!
mikeee + 1 + 1 拜托模型资料再分享一下,感谢
365373011 + 1 + 1 谢谢@Thanks!
sunboy0628 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
佛曰月夜乐yeah + 1 + 1 老哥,群号能发下吗
yike911 + 1 + 1 谢谢分享,看看怎么样
苏紫方璇 + 3 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
小优雅 + 1 我很赞同!
且随疾风前行 + 1 + 1 热心回复!
cq1736734085 + 1 + 1 感谢大佬
obeina + 1 + 1 前来支持,感谢分享,后期可交流学习。
zuoli886 + 1 + 1 膜拜一下大佬
叶含风 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

WangChun518 发表于 2019-9-16 12:49
hehe549124 发表于 2019-9-12 10:21
厉害了,这样本库哪搞的,看来12306又得升级验证码了

用这个可能会被抓
朱头 发表于 2019-11-30 15:56
WangChun518 发表于 2019-9-16 12:49
用这个可能会被抓

这个应该还好吧 如果搞党建的东西 肯定 不行
kon88 发表于 2019-9-12 09:04
lhnhm00 发表于 2019-9-12 09:13
来瞄一眼
yanmingming 发表于 2019-9-12 09:18
这个可以有 大佬
sunxiaomo 发表于 2019-9-12 09:18
这个要大批量使用的话,12306又得加班了吧
chengcheng_lr 发表于 2019-9-12 09:19
厉害的楼主
头像被屏蔽
zenaiwen 发表于 2019-9-12 09:20
提示: 作者被禁止或删除 内容自动屏蔽
xinzdf110 发表于 2019-9-12 09:24
这个得大量的学习素材
叶含风 发表于 2019-9-12 09:27
不管怎么说,支持一下
unixcs 发表于 2019-9-12 09:31
好东西哇  最近刚好在抢票  可以试一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 10:05

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表