• python实现合工大试题库刷题篇之验证码篇


    最近,学校题库网站在登录页面加了验证码,原来的不能用了。于是,和室友合作,他写机器学习识别验证码,我来整合。

    他的github:https://github.com/qq316107934/tkkc_captcha_hunter/blob/master/captcha2.py

    思路是:把验证码识别程序放在云服务器上,做成api供本地调用。

    整个折腾过程遇到的问题:

    • 首先自然是在服务器安装各种机器学习包及其依赖包了。我开始是用的python2的pip然后再安装scipy的时候吧,编译安装结果告诉我“无法分配更多内存的问题”.然后换apt-get去安装scipy以及sklearn。结果由于服务器时ubuntu14.04LTS,所以软件源是比较老的,下下来的包太老了,不能用。卒。在室友的“强迫”下,安了pip3,结果一路安下去,没出啥故障。。。并且知道了原来ubuntu不仅自带了python2.7还自带了python3.4(在控制台分别输入python、python3即可发现)
    • 安完所有包,开始部署了。用的flask,微调了下机器学习代码。成功部署,可以访问后,怎么传验证码图片的数据呢?一开始用的get,貌似直接超过了url大小的限制,于是改做post方式。第二个问题,获取到的图片十六进制数据是诸如‘xff’这样表示的,还得通过urlencode再传输。这里使用python urllib的两个函数:1. urllib.parse.quote_from_bytes(字节)  2.urllib.parse.unquote_to_bytes(str).传输这一块搞定了,然后测试了下,可以返回识别出的验证码,收工。(顺便提一句,flask中通过flask.request.form[‘ ’]来获取post的数据)
    • OK,回归本地的程序代码来。该加的都加上,比如post的字段randomCode.这里需要注意,由于验证码识别率并不是百分百,所以可能得多试几次。
    1. python是支持 while i>100这样的语法的,以后不用再纠结如何在python里写条件循环了。。。
    2. 清除一个session对象的cookies:ses.cookies.clear()
  • 相关阅读:
    Linux中权限管理之文件特殊权限
    Linux中权限管理之ACL权限
    Linux用户管理命令
    【并发编程】实现多线程的几种方式
    “数据中台”的再思考
    软件工程六大设计原则总结,案例演示
    你必须要知道的移动端开发知识
    【搞定面试官】你还在用Executors来创建线程池?会有什么问题呢?
    EasyCode实现数据库到Swagger全自动化
    【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)
  • 原文地址:https://www.cnblogs.com/godoyj/p/6209042.html
Copyright © 2020-2023  润新知