zoukankan      html  css  js  c++  java
  • 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()
  • 相关阅读:
    Android Design Support Library(三)用CoordinatorLayout实现Toolbar隐藏和折叠
    Android Design Support Library(二)用NavigationView实现抽屉菜单界面
    Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
    Android5.x Notification应用解析
    了解ViewFlipper工作机制
    OkHttp自定义重试次数
    OkHttp实现全局过期token自动刷新
    Android5.0新控件
    Android4.0新控件
    用typedef给结构体一个别名
  • 原文地址:https://www.cnblogs.com/godoyj/p/6209042.html
Copyright © 2011-2022 走看看