前言
在逆向时经常会遇到一些验证码,例如滑块算距离、点选获得坐标、图片识别等等。当然我们可以使用打码平台,遇到难的使用倒没什么,有时候遇到简单的使用打码平台老感觉血亏(蚊子再小也是块肉),那今天我们就来介绍一个完全开源与免费的工具,不用像opencv有学习成本,简单好上手,叫做ddddocr(带带弟弟ocr)
1.识别数字文字
直接看运行结果
发现模式2的成功率高很多,平时使用的时候应该要根据情况选择
def ocr(file): #file=文件路经
with open(file=file,mode='rb') as f:
bg_content=f.read()
ocr=ddddocr.DdddOcr(show_ad=False,beta=True) #参数加上beta=True就是切换模型二
result=ocr.classification(bg_content) #对于黑色透明图片加上参数 png_fix=True
2.获取滑块距离
ret打印的结果里的target分别是左上的横纵坐标和右下的横纵坐标
def hk():
with open(file='background.png', mode='rb') as f:
bk_contemt =f.read()
with open(file='front.png', mode='rb') as f:
front_content=f.read()
slide=ddddocr.DdddOcr(det=False,ocr=False,show_ad=False)
ret=slide.slide_match(front_content,bk_contemt,simple_target=True)
target=ret['target']
print(ret) #target里面是左下 右上
im=cv2.imread('background.png')
#画出滑块位置
cv2.rectangle(im,(target[0],target[1]),(target[2],target[3]),(0,0,255),2)
cv2.imshow('slide',im)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.点选
结果是各个的左上右下xy坐标,点选一般使用ddddocr较少
def dianxuan():
with open(file='background.png',mode='rb') as f:
bk_contemt=f.read()
det=ddddocr.DdddOcr(det=True,show_ad=False)
poses=det.detection(bk_contemt)
print(poses)
im=cv2.imread('background.png')
for pose in poses:
cv2.rectangle(im,(pose[0],pose[1]),(pose[2],pose[3]),(0,0.255),2)
cv2.imshow('dianxuan', im)
cv2.waitKey(0)
cv2.destroyAllWindows()
补充
一般简单的验证码处理可以用ddddocr,遇到难的也可以基于opencv进行二值化等操作进行处理,总之ddddocr是一个处理验证码很方便的工具,实在遇到难的我这里推荐几个我正在用的打码平台
超级鹰:超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 (chaojiying.com)https://www.chaojiying.com/
云码:
云码-自动验证码识别平台_验证码识别API接口_免费验证码软件 (jfbym.com)https://www.jfbym.com/