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  # 检验登录是否成功
				
时间: 2024-10-23 15:52:51

Python 实现简单图片验证码登录的相关文章

java实现生成简单图片验证码

原文:java实现生成简单图片验证码 源代码下载地址:http://www.zuidaima.com/share/1550463428840448.htm 项目载图: 该项目要转换为Dynamic web project http://www.zuidaima.com/blog/1618162161323008.htm 另外缺少jar包: http://www.zuidaima.com/jar/search/jstl-1.0.1.htm http://www.zuidaima.com/jar/s

python实现简单图片爬虫并保存

先po代码 #coding=utf-8 import urllib.request #3之前的版本直接用urllib即可,下同 #该模块提供了web页面读取数据的接口,使得我们可以像读取本地文件一样读取www或者ftp上的数据 import re import os def getHtml(url): page = urllib.request.urlopen(url); html = page.read(); return html; def getImg(html): imglist = r

python生成简单的验证码

#coding=utf-8 from PIL import Image, ImageDraw, ImageFont, ImageFilter import random # 随机字母: def rndChar(): return chr(random.randint(65, 90)) # 随机颜色1: def rndColor(): return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255))

Python实现简单的用户登录信息确认,密码输错3次后,用户被锁定

'''问题描述: 从文档中读入用户名和密码,检验用户名和密码的正确性, 密码输错三次后用户被锁定,不允许登陆 解决思路: 1.读用户信息文档,存入二维列表中, 2.需要把锁定的拉入黑名单 3.只有用户名输对的情况下才可以输入密码,密码输错三次用户就被锁定''' #User_Info存用户名和密码,Lock_Info存被锁定的用户file = open(r"User_Info.txt","r")file2 = open(r"Lock_Info.txt&quo

Python简单的制作图片验证码

-人人可以学Python--这里示范的验证码都是简单的,你也可以把字符扭曲 人人可以学Python.png Python第三方库无比强大,PIL 是python的一个d第三方图片处理模块,我们也可以使用它来生成图片验证码PIL安装命令安装: pip install pillow 下载源码安装:复制地址 :https://github.com/python-pillow/Pillow PIL使用 例子:生成图片,并填充文字 #!/usr/bin/python #-*-coding:utf-8-*-

Python Scrapy 验证码登录处理

一.Form表单分析 以豆瓣登录页面为例分析,豆瓣登录页是:https://accounts.douban.com/login,浏览器打开之后查看源码,查找登录的form表单HTML结构.如下: 包括了form_email.form_password.captcha-solution四个表单参数,需要注意之处是name,而不是id. 二.验证码图片处理 1.分析验证码参数图片的构建如下图,获取id为captcha_image的src图片即可.可以采用人工输入,或第三方图片验证码识别API获得.

python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

操作环境:python3 在上一文中python爬虫scrapy框架--人工识别登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前的文章便于理解 本文将介绍如何用scrapy来登录知乎. 不多说,直接上代码: import scrapy import re import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhi

简单制作验证码和绘制图片

今天仍然是完善一般处理程序小项目,但是昨天小小的项目已经终结,今天只是完善一下新的样式罢啦,嘿嘿,我们通常在网上浏览图片时间都会看到图片上面呈现有水印字体的样式,其实这些图片都是通过一些简单的小技术来修饰的:另外我们现在在网上随处可见注册页面,当我们想在一个网站上面注册新的用户时间,需要注册完信息以后填写随机生成的验证码,或者我们想要登录一个网站时间也需要验证码的填写,由此可见,验证码也是我们程序员需要必备的小技术哦,下面就来总结一下这两项小功能的实现. 一.图片上的水印字体 我们可以看到第一张

字符型图片验证码识别完整过程及Python实现

1   摘要 验证码是目前互联网上非常常见也是非常重要的一个事物,充当着很多系统的 防火墙 功能,但是随时OCR技术的发展,验证码暴露出来的安全问题也越来越严峻.本文介绍了一套字符验证码识别的完整流程,对于验证码安全和OCR识别技术都有一定的借鉴意义. 2   关键词 关键词:安全,字符图片,验证码识别,OCR,Python,SVM,PIL 3   免责声明 本文研究所用素材来自于某旧Web框架的网站 完全对外公开 的公共图片资源. 本文只做了该网站对外公开的公共图片资源进行了爬取, 并未越权