Python 实现简单图片验证码登录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 实现简单图片验证码登录相关的知识,希望对你有一定的参考价值。

朋友说公司要在测试环境做接口测试,登录时需要传入正确的图片的验证码,本着懒省事的原则,推荐他把测试环境的图片验证码写死,我们公司也是这么做的^_^。劝说无果/(ㄒoㄒ)/~~,只能通过 OCR 技术来识别图片验证码了,看了一下他们的验证码,长这样技术分享,还好挺容易识别(背景色是透明的,有个坑需要处理)。

Python 实现了图片验证码登录 demo,用到的第三方模块有 requests, PIL, pytesseract。

 1 # coding: utf-8
 2 import requests
 3 from PIL import Image
 4 from pytesseract import image_to_string, pytesseract
 5 
 6 pytesseract.tesseract_cmd = D:\\\\env\\\\Tesseract-OCR\\\\tesseract
 7 # url
 8 base_url = https://hostxxx
 9 code_url = base_url + /common-platform/code
10 do_login_url = base_url + /common-platform/doLogin
11 
12 
13 # 空白背景色 pytesseract 无法识别,更换了一下背景色
14 def change_background(img_fp):
15     try:
16         img = Image.open(img_fp)
17         x, y = img.size
18         new_img = Image.new(RGBA, img.size, (255, 255, 255))
19         new_img.paste(img, (0, 0, x, y), img)
20         return new_img
21     except:
22         print u更换图片背景失败
23 
24 
25 # 识别图片验证码
26 def ocr2str(img):
27     return str(image_to_string(img))
28 
29 
30 # 创建 session
31 session = requests.Session()
32 # 请求图片验证码接口
33 code_resp = session.request(method=GET, url=code_url, verify=False)
34 # 保存图片验证码
35 with open(code.png, wb) as f:
36     f.write(code_resp.content)
37 # 验证码
38 code = ocr2str(change_background(code.png))
39 # 登录数据
40 do_login_data = {
41     userName: user,
42     password: pwd,
43     verificationCode: code
44 }
45 # 登录接口
46 do_login_resp = session.request(method=POST, url=do_login_url, data=do_login_data, verify=False)
47 print do_login_resp.text  # 检验登录是否成功

 


 

以上是关于Python 实现简单图片验证码登录的主要内容,如果未能解决你的问题,请参考以下文章

Python 实现识别弱图片验证码

校验验证码 实现登录验证

#私藏项目实操分享#Python模拟登录,selenium模块,Python识别图形验证码实现自动登录

用Python识别验证码

新年快乐:用Python识别验证码

java 登陆时的验证码怎么做?