如下图所示(来源于科幻电影阿丽塔战斗天使。虽然是科幻电影,但这个程序是可以做出来的)
如图所示,屏幕我的网页,上面有一个密码。密码为图形且其中有花里胡哨的字符。
我想要的效果是:这是一个网站的登录界面。登录界面上有密码,密码由密码文字和图形组成。
每一次登录,图形不再是原来的图形,位置组合也不一样。字符本身不变,但位置变。
当以正确的顺序点击正确的密码文字所在的图形后,登录成功。
1.语言仅限HTML,Python两种,可以加入一点Java。最好使用Python+HTML。Java和我的服务器语言不符。
2.完成者我会进行打赏。
3.做到图形不变,其他要求都做到的,也有赏。
4.本项目为个人闲着没事做着玩的,不要求精度太高,但要求密码不能被别人看到。
5.我的要求已经很明确了。
6.思路:
当点击符号所在的图片时,把某个变量设为一个英文字母或数字。
若 顺序正确 且 文字正确:
则 登录成功。
# coding: utf-8
import requests
from PIL import Image
from pytesseract import image_to_string, pytesseract
pytesseract.tesseract_cmd = 'D:\\env\\Tesseract-OCR\\tesseract'
# url
base_url = 'https://hostxxx'
code_url = base_url + '/common-platform/code'
do_login_url = base_url + '/common-platform/doLogin'
# 空白背景色 pytesseract 无法识别,更换了一下背景色
def change_background(img_fp):
try:
img = Image.open(img_fp)
x, y = img.size
new_img = Image.new('RGBA', img.size, (255, 255, 255))
new_img.paste(img, (0, 0, x, y), img)
return new_img
except:
print u'更换图片背景失败'
# 识别图片验证码
def ocr2str(img):
return str(image_to_string(img))
# 创建 session
session = requests.Session()
# 请求图片验证码接口
code_resp = session.request(method='GET', url=code_url, verify=False)
# 保存图片验证码
with open('code.png', 'wb') as f:
f.write(code_resp.content)
# 验证码
code = ocr2str(change_background('code.png'))
# 登录数据
do_login_data = {
'userName': 'user',
'password': 'pwd',
'verificationCode': code
}
# 登录接口
do_login_resp = session.request(method='POST', url=do_login_url, data=do_login_data, verify=False)
print do_login_resp.text # 检验登录是否成功
经常看见你水别人的,现在凭什么不让别人水你的了?