python破解验证码
一、需求分析
在爬虫过程中,有的时候需要登录,而登录的时候一般需要验证码。
如果手动输入验证码肯定来不及的或达不到预期要求,这里就需要自动登录,这就意味着需要破解验证码。
验证码的类型有很多,常见的两类:
(1)文字验证码
(2)滑动图形验证
验证码有很多种类,下面以这两种为讲解思路引导。
文字验证码
(1)使用selenium访问
(2)将验证码图片保存
(3)识别
滑动验证
(1)计算滑动距离
(2)模拟人滑动(总体思路是先快再慢)
实现文字验证码,可以使用图像识别技术,有很多第三方做好的图像识别接口,比如百度的图像文字识别,腾讯的图形文字识别,华为的图形文字识别。
二、文字验证码
这里以超级鹰为例
2.1 注册登录
2.2 购买题分/免费测试
3.3 项目中使用
找到开发文档,官方案例
运行测试:
3.4 代码实现(文字验证码)
# 文字验证码
from time import sleep
from selenium import webdriver
from PIL import Image
from chaojiying import Chaojiying_Client
import time
screen_name = "./screen.png"
code_name = "./code.png"
def save_screen(driver,filename):
# 访问网页
driver.get('http://www.chaojiying.com/user/login/')
# 保存当前网页图片
driver.save_screenshot("./screen.png")
def save_code(src,dest,rectangle):
#加载屏幕图
img = Image.open(src)
#截取
img_new = img.crop(rectangle)
# 保存
img_new.save(dest)
def decern_code(filename):
"""识别"""
chaojiying = Chaojiying_Client('ymmymm', 'ymm123456'