大模型驱动的应用兴起,网页操作或者爬取变成了很强的需求,虽然现在自动化工具或者爬虫工具很多,但他们都怕一个东西,那就是验证码,有了它很多工具就得歇菜。当今多模态大模型能力这么强,那能否它们的能力来破解验证码,把这一个短板补上呢?
今天,介绍一个项目,它就是这个思路的尝试。
openai-captcha-detection 是一款基于 OpenAI API 的开源验证码识别工具,专为开发者设计,旨在实现验证码处理的自动化。它通过 OpenAI的模型自带图像识别技术,来识别验证码,号称识别率高达 100%!
该项目部分源码:
class OCRClient:
def __init__(self):
self._load_environment()
self.client = self._initialize_openai_client()
def _load_environment(self):
"""Load environment variables from a .env file."""
load_dotenv()
def _initialize_openai_client(self):
"""Initialize and return an OpenAI client."""
return OpenAI()
def encode_image_to_base64(self, image_path):
"""Read image from the given path and return base64 encoded string."""
with open(image_path, "rb") as image_file:
image_data = image_file.read()
return base64.b64encode(image_data).decode('utf-8')
def invoke_gpt4o_ocr(self, encoded_image):
"""Invoke GPT-4o-mini to perform OCR on the provided base64 encoded image."""
completion = self.client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "请对这张图片进行OCR识别,并输出最准确的验证码,以项目列表格式直接输出识别出的结果,不要输出其他内容。"},
{"type": "image\_url", "image\_url": {"url": "data:image/png;base64," + encoded_image}}
]
}
],
max_tokens=300,
)
result = completion.choices[0].message.content.replace("-","").strip()
return result
由上可见,项目实现代码非常简陋,因此其可靠性很难保证,但可以给大家可以启发,以此思路完善现有爬虫或自动化工具能力,除了传统的图片验证码外,新型的比如CloudFlare和Google的验证形式,也可以尝试使用大模型来解决。
github地址:https://github.com/zgimszhd61/openai-capcha-detection
后台回复“进群”入群讨论
想要使用Claude、OpenAI o1等模型,没有海外信用卡的朋友,推荐我在用的Wildcard 虚拟卡:
使用该地址安全注册:https://bewildcard.com/i/WINKRUN