求如何制作一个图形文字验证码,不要灌水

不要发送链接。不要推荐那种有现成的程序的网站,它们做的和我的要求不符。达到我要求的人赏金100!

我想要达到的效果:

如下图所示(来源于科幻电影阿丽塔战斗天使。虽然是科幻电影,但这个程序是可以做出来的)

img

img

如图所示,屏幕我的网页,上面有一个密码。密码为图形且其中有花里胡哨的字符。

我想要的效果是:这是一个网站的登录界面。登录界面上有密码,密码由密码文字和图形组成。
每一次登录,图形不再是原来的图形,位置组合也不一样。字符本身不变,但位置变。
当以正确的顺序点击正确的密码文字所在的图形后,登录成功。

要求与备注:

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  # 检验登录是否成功

经常看见你水别人的,现在凭什么不让别人水你的了?