topvisor / uncaptcha
通过服务解决验证码的库
1.4.3
2023-09-21 12:52 UTC
Requires
- php: >=7.3
- ext-curl: *
README
PHP 库,用于在网站中解决验证码。
与您选择的验证码服务之一协同工作。
示例中使用的是流行的 Рукапча 服务,其特点是能够高质量地处理基里尔字母验证码:[https://rucaptcha.com/api-rucaptcha](https://rucaptcha.com/api-rucaptcha)。
支持与以下类型的验证码服务协同工作
- ImageToText
- ReCaptcha V2
- ReCaptcha V2 无痕
- ReCaptcha V3
- FunCaptcha
- GeeTest
- hCaptcha
- 自定义 - 灵活配置其他类型的验证码
安装
使用 Composer 安装。
composer.json
{ "repositories":[ { "url":"https://github.com/topvisor/uncaptcha.git", "type":"git" } ], "require": { "topvisor/uncaptcha": "~1.3" } }
使用库进行图片文字识别的示例
// ImageToText и другие модули распознавания см. в директории /src/ include_once('%PATH_TO_COMPOSER%/vendor/autoload.php'); // создаем объект на основе модуля ImageToText - распознавание текстовой капчи $uncaptcha = new \Topvisor\Uncaptcha\ImageToText(); $uncaptcha->setTimeout(20); // таймаут соедиения $uncaptcha->setTaskTimeout(240); // таймаут разгадывания $uncaptcha->setDebugLevel(1); // 0 - без лога, 1 - короткий лог, 2 - полный лог $uncaptcha->setDebugLabel('rc'); $uncaptcha->setUseHTTPS(true); $uncaptcha->setHost('rucaptcha.com'); $uncaptcha->setV(1); // in.php / res.php style $uncaptcha->setKey('%API_KEY%'); $uncaptcha->setBodyFromFile('%URL_IMAGE%'); $result = $uncaptcha->resolve(); if(!$result){ echo 'Ошибка разгадывания капчи: '.$uncaptcha->getErrorMessage(); return; } echo 'Капча разгадана: "'.$result.'" за '.$uncaptcha->getTaskElapsed().' сек.';
解码过程中获得的日志将被输出到屏幕。此外,还可以通过 getDebugLog() 获取它们,例如记录到数据库中。
$logs = $uncaptcha->getDebugLog();
根据服务器是否接受验证码,可以向服务发送通知
// $uncaptcha->reportGood(); // капча разгадана верно // $uncaptcha->reportGood(); // капча разгадана неверно
库模块
- FunCaptcha
- FunCaptchaProxyless
- GeeTest
- GeeTestProxyless
- HCaptcha
- HCaptchaProxyless
- ImageToText
- ReCaptchaV2
- ReCaptchaV2Proxyless
- RecaptchaV3
- RecaptchaV3Proxyless
- 自定义 - 通过 $uncaptcha->setPost() 设置参数,以进行验证码的灵活配置的模块
每个模块都可能包含不同的一组方法来执行必要的配置
要开始使用其中一个,需要创建对象
$uncaptcha = new \Topvisor\Uncaptcha\ImageToText(); // далее необходимо указать доступ к сервису и опции для разгадывания капчи и запустить разгадывание (см. пример выше)
基本方法
基本方法对所有模块都可用
服务设置
- setReferalId(string $referalId) - referalId 代码可以用于某些服务
- setUseHTTPS(bool $useHTTPS) - 使用 https
- setHost(string $host) - 解码服务的宿主
- setV(int $v) - 服务的 API 版本,支持两个值
- 1: API style: $host/in.php / simplesite.com/res.php?action=%methodName%
- 2: API style: $host/%methodName%
- setKey(string $clientKey) - 您的 API 密钥
- setTimeout() - 连接超时,默认 20 秒
验证码设置
- setCreateTaskPost(array $createTaskPost) - 可定制的查询参数集,主要用于自定义模块的配置
- setTaskTimeout(int $timeout) - 解码验证码的超时时间,默认 240 秒
解码过程
- resolve() - 启动解码,在成功的情况下返回结果
- getTaskid() - 获取任务 ID,ID 在解码开始时创建,请参阅 resolve()
- getTaskElapsed() - 获取解码验证码所花费的时间
- getErrorMessage() - 获取最后一个错误的文本
- getResult() - 有时需要获取比图片上的文本更多的信息。该方法将返回包含结果的对象
调试/日志记录
- setDebugLevel() - 0: 无日志,1: 简短日志,2: 详细日志
- setDebugFormat() - 0: text,1: html
- setDebugLabel() - 设置日志名称
- clearDebugLog() - 清除日志
- getDebugLog() - 获取日志字符串数组