Version:3.1.9
类型 | 状态 | 描述 |
---|---|---|
OCR识别 |
✅ | 返回图片字符串 |
数学计算 |
✅ | 返回计算结果 |
缺口滑块 |
✅ | 返回坐标 |
阴影滑块 |
✅ | 返回坐标 |
图标点选 |
✅ | 侦测图标位置 或 按序返回坐标 |
文字点选 |
✅ | 侦测文字位置 或 按序返回坐标 |
相似对比 |
✅ | 图片中文字的相似度对比 |
双旋转验证码 |
✅ | 返回角度 |
WebApi服务 |
✅ | https://github.com/81NewArk/AntiCAP-WebApi |
本项目基于 MIT 开源协议 发布,欢迎自由使用、修改和分发,但必须遵守中华人民共和国法律法规。
使用本项目即表示您已阅读并同意以下条款:
-
合法使用: 不得将本项目用于任何违法、违规或侵犯他人权益的行为,包括但不限于网络攻击、诈骗、绕过身份验证、未经授权的数据抓取等。
-
风险自负: 任何因使用本项目而产生的法律责任、技术风险或经济损失,由使用者自行承担,项目作者不承担任何形式的责任。
-
禁止滥用: 不得将本项目用于违法牟利、黑产活动或其他不当商业用途。
python >=3.8 64bit
pip install AntiCAP -i https://pypi.tuna.tsinghua.edu.cn/simple
# example.py
import base64
import AntiCAP
with open("captcha.jpg", "rb") as img_file:
img_base64 = base64.b64encode(img_file.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.OCR(img_base64=img_base64) #传入图片Base64编码字符串
print(result) # 返回字符串 jepy
# example.py
import base64
import AntiCAP
with open("captcha.jpg", "rb") as img_file:
img_base64 = base64.b64encode(img_file.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Math(img_base64=img_base64) #传入图片Base64编码字符串
print(result) #返回计算结果 8
# example.py
import base64
import AntiCAP
with open("captcha.jpg", "rb") as img_file:
img_base64 = base64.b64encode(img_file.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Detection_Icon(img_base64=img_base64) #传入图片Base64编码字符串
print(result)
# [{'class': 'icon', 'box': [9.12, 105.4, 111.73, 223.02]}...]
# box分别为 [x1, y1, x2, y2] 左上角和右下角坐标
# example.py
import base64
import AntiCAP
with open("captcha.jpg", "rb") as img_file:
img_base64 = base64.b64encode(img_file.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Detection_Text(img_base64=img_base64) #传入图片Base64编码字符串
print(result)
# [{'class': 'Text', 'box': [145.71, 19.21, 223.99, 95.7]}...]
# box分别为 [x1, y1, x2, y2] 左上角和右下角坐标
# example.py
import base64
import AntiCAP
with open("order_image.jpg", "rb") as f:
order_img_base64 = base64.b64encode(f.read()).decode('utf-8')
# 读取目标图(所有图标)并转为 base64
with open("target_image.jpg", "rb") as f:
target_img_base64 = base64.b64encode(f.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.ClickIcon_Order(
order_img_base64=order_img_base64,
target_img_base64=target_img_base64
)
print(result)
# example.py
import base64
import AntiCAP
with open("order_image.jpg", "rb") as f:
order_img_base64 = base64.b64encode(f.read()).decode('utf-8')
# 读取目标图(所有图标)并转为 base64
with open("target_image.jpg", "rb") as f:
target_img_base64 = base64.b64encode(f.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.ClickIcon_Order(
order_img_base64=order_img_base64,
target_img_base64=target_img_base64
)
print(result)
# example.py
import base64
import AntiCAP
# 读取滑块图片(小块)
with open("slider.png", "rb") as f:
target_base64 = base64.b64encode(f.read()).decode('utf-8')
# 读取背景图片(带缺口的大图)
with open("background.jpg", "rb") as f:
background_base64 = base64.b64encode(f.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Slider_Match(target_base64=target_base64,
background_base64=background_base64
)
print(result)
# example.py
import base64
import AntiCAP
# 读取滑块图片(小块)
with open("target.jpg", "rb") as f:
target_base64 = base64.b64encode(f.read()).decode('utf-8')
# 读取背景图片(带缺口的大图)
with open("background.jpg", "rb") as f:
background_base64 = base64.b64encode(f.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Slider_Match(target_base64=target_base64,
background_base64=background_base64
)
print(result)
# example.py
import base64
import AntiCAP
with open("image1.jpg", "rb") as f:
image1_base64 = base64.b64encode(f.read()).decode('utf-8')
with open("image2.jpg", "rb") as f:
image2_base64 = base64.b64encode(f.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.compare_image_similarity(image1_base64=image1_base64, image2_base64=image2_base64)
print("相似度结果:", result)
# example.py
import base64
import AntiCAP
with open("inside.jpg", "rb") as f:
inside_base64 = base64.b64encode(f.read()).decode('utf-8')
with open("outside.jpg", "rb") as f:
outside_base64 = base64.b64encode(f.read()).decode('utf-8')
Atc = AntiCAP.Handler(show_banner=True)
result= Atc.Double_Rotate(inside_base64=inside_base64, outside_base64=outside_base64)
print(result)
# {'similarity': 0.6651270985603333, 'inner_angle': 75.5, 'raw_angle': 151}
import AntiCAP
Atc = AntiCAP.Handler(show_banner=True)
result = Atc.Math(img_base64="",
# math_model_path 参数为 .pt格式的yolo侦测模型
math_model_path=r"C:\AntiCAP\model\yuor_math_model.pt")
result = Atc.Detection_Icon(img_base64="",
# text_model_path 参数为 .pt格式的yolo侦测模型
detectionIcon_model_path=r"C:\AntiCAP\model\yuor_detectionIcon_model.pt")
result = Atc.Detection_Text(img_base64="",
# detectionText_model_path 参数为 .pt格式的yolo侦测模型
detectionText_model_path=r"C:\AntiCAP\model\yuor_detectionText_model.pt")
result = Atc.ClickText_Order(order_img_base64="",
target_img_base64="",
# text_model_path 参数为 .pt格式的yolo侦测模型
detectionText_model_path=r"C:\AntiCAP\model\yuor_detectionTcon_model.pt",
# sim_onnx_model_path为 .onnx格式的孪生神经网络模型
sim_onnx_model_path=r"C:\AntiCAP\model\your_sim_onnx_model.onnx")
result = Atc.ClickIcon_Order(order_img_base64="",
target_img_base64="",
# text_model_path 参数为 .pt格式的yolo侦测模型
detectionIcon_model_path=r"C:\AntiCAP\model\yuor_detectionIcon_model.pt",
# sim_onnx_model_path为 .onnx格式的孪生神经网络模型
sim_onnx_model_path=r"C:\AntiCAP\model\your_sim_onnx_model.onnx")
result = Atc.compare_image_similarity(image1_base64="",
image2_base64="",
# sim_onnx_model_path为 .onnx格式的孪生神经网络模型
sim_onnx_model_path=r"C:\AntiCAP\model\your_sim_onnx_model.onnx")
这份荣光我不会独享
[1] Ddddocr作者 网名:sml2h3
[2] 微信公众号 OneByOne 网名:十一姐
[3] 苏州大学,苏州大学文正学院 计算机科学与技术学院 张文哲教授
[4] 苏州大学,苏州大学文正学院 计算机科学与技术学院 王辉教授
[5] 苏州市职业大学,苏州大学文正学院 计算机科学与技术学院 陆公正副教授
[6] 武汉科锐软件安全教育机构 钱林松讲师 网名:Backer
[1] Github. 2025.03.28 https://github.com/sml2h3
[2] Github. 2025.03.28 https://github.com/2833844911/
[3] Bilibili. 2025.03.28 https://space.bilibili.com/308704191
[4] Bilibili. 2025.03.28 https://space.bilibili.com/472467171
[5] Ultralytics. 2025.03.28 https://docs.ultralytics.com/modes/train/
[6] YRL's Blog. 2025.03.28 https://blog.2zxz.com/archives/icondetection