一.验证码的作用 :
防止恶意破解密码、刷票、论坛灌水、刷页。有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,现在也用于反爬虫 风控这块
二.常见验证码
1. 字符验证码:
计算机随机产生4-6位的字符串 (数字字母组成)可能会增加难度(干扰线 噪点 重叠 变形)
需要输入和验证码一样的内容才能成功
2. 滑动验证码:
行为验证 需要拖动滑块到缺口位置 滑动图片进行拼图
3. 点选(点触)验证码:
根据答案在图片上依次点击对应答案内容
三.处理方式
1. 协议处理(先不管):
一般有加密 需要逆向 然后进行图片处理和 图片识别
2. 自动化处理(也适用协议处理):
不需要管加密字段 只需要识别图片
也适用协议处理
处理方式1:休眠+人工过验证码
处理方法2:训练模型(不推荐)或者用现成的OCR识别图片
# pip install ddddocrimport ddddocrwith open('demo.png', 'rb')as f: img = f.read()ddd_ = ddddocr.DdddOcr() # 实例化# 字符验证码识别print(ddd_.classification(img))
处理方法3:借助打码平台【14:1.33】
''' 需求 模拟登录超级鹰平台 处理字符验证码 步骤 1: 访问登录页面 https://www.chaojiying.com/user/login/ 2: 定位账号密码输入框 输入账号密码 3: 使用打码平台识别验证码的图片 4: 输入验证码 点击登录'''import timefrom selenium import webdriver# 推荐 把超级鹰的demo代码 放到整个项目的根路径from Chaojiying_Python.chaojiying import Chaojiying_Clientbrowser = webdriver.Chrome()# 1: 访问登录页面 https://www.chaojiying.com/user/login/browser.get('https://www.chaojiying.com/user/login/')# 2: 定位账号密码输入框 输入账号密码browser.find_element_by_name('user').send_keys('nanfeng123')time.sleep(1)browser.find_element_by_name('pass').send_keys('nanfeng')# 3: 使用打码平台识别验证码的图片# 要识别 肯定先要有这个图片element = browser.find_element_by_xpath('//form[@name="fm2"]/div/img')element.screenshot('chaojiying.png') # 元素.screenshot 对当前元素截图chaojiying = Chaojiying_Client('nanfeng123', 'nanfeng', '963747')im = open('chaojiying.png', 'rb').read()code = chaojiying.PostPic(im, 1902)['pic_str'] # 取出pic_str的值print(code)# 4: 输入验证码 点击登录browser.find_element_by_name('imgtxt').send_keys(code) # 输入验证码结果browser.find_element_by_class_name('login_form_input_submit').click()
打码平台:你将验证码发给打码平台 打码平台返回验证码结果给你 打码平台很多 用自己钟意的就行
本文转载自: https://blog.csdn.net/D18346/article/details/143167438
版权归原作者 薛定谔的小笼包· 所有, 如有侵权,请联系我们删除。
版权归原作者 薛定谔的小笼包· 所有, 如有侵权,请联系我们删除。