trongloikt192/2captcha

PHP包,用于轻松集成2captcha API

dev-main 2022-11-21 08:51 UTC

This package is auto-updated.

Last update: 2024-09-21 13:15:56 UTC


README

将2Captcha验证码解决服务快速集成到您的代码中,以自动解决任何类型的验证码的最简单方法。

安装

此包可以通过Composer或手动安装

Composer

composer require trongloikt192/2captcha

手动

src目录复制到您的项目中,然后根据需要在哪里需要require自动加载器(src/autoloader.php

require 'path/to/autoloader.php';

配置

TwoCaptcha实例可以创建如下

$solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');

还有一些可以配置的选项

$solver = new \TwoCaptcha\TwoCaptcha([
    'server'           => 'http://rucaptcha.com',
    'apiKey'           => 'YOUR_API_KEY',
    'softId'           => 123,
    'callback'         => 'https://your.site/result-receiver',
    'defaultTimeout'   => 120,
    'recaptchaTimeout' => 600,
    'pollingInterval'  => 10,
]);

TwoCaptcha实例选项

重要:一旦为TwoCaptcha实例定义了callback,所有方法都只返回验证码ID,而不调用API获取结果。结果将被发送到回调URL。要手动获取答案,请使用getResult方法

解决验证码

在提交任何基于图像的验证码时,您可以为2captcha工作者提供附加选项,以帮助他们正确解决它。

验证码选项

以下可以找到每种验证码类型的基本示例。查看示例目录以找到更多示例,包括所有可用选项。

普通验证码

要绕过普通验证码(图像上的扭曲文本)请使用以下方法。此方法还可以用于识别图像上的任何文本。

$result = $solver->normal('path/to/captcha.jpg');

文本验证码

此方法可用于绕过需要以纯文本形式回答的问题的验证码。

$result = $solver->text('If tomorrow is Saturday, what day is today?');

ReCaptcha v2

使用此方法解决ReCaptcha V2并获取令牌以绕过保护。

$result = $solver->recaptcha([
    'sitekey' => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
    'url'     => 'https://mysite.com/page/with/recaptcha',
]);

ReCaptcha v3

此方法提供ReCaptcha V3解决程序并返回令牌。

$result = $solver->recaptcha([
    'sitekey' => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
    'url'     => 'https://mysite.com/page/with/recaptcha',
    'version' => 'v3',
]);

FunCaptcha

FunCaptcha (Arkoselabs)解决方法。返回令牌。

$result = $solver->funcaptcha([
    'sitekey' => '6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-',
    'url'     => 'https://mysite.com/page/with/funcaptcha',
]);

GeeTest

解决GeeTest拼图验证码的方法。以JSON格式返回一组令牌。

$result = $solver->geetest([
    'gt'        => 'f1ab2cdefa3456789012345b6c78d90e',
    'challenge' => '12345678abc90123d45678ef90123a456b',
    'url'       => 'https://www.site.com/page/',
]);

hCaptcha

使用此方法解决hCaptcha挑战。返回一个令牌以绕过验证码。

$result = $solver->hcaptcha([
    'sitekey'   => '10000000-ffff-ffff-ffff-000000000001',
    'url'       => 'https://www.site.com/page/',
]);

KeyCaptcha

基于令牌的解决KeyCaptcha的方法。

$result = $solver->keycaptcha([
    's_s_c_user_id'          => 10,
    's_s_c_session_id'       => '493e52c37c10c2bcdf4a00cbc9ccd1e8',
    's_s_c_web_server_sign'  => '9006dc725760858e4c0715b835472f22-pz-',
    's_s_c_web_server_sign2' => '2ca3abe86d90c6142d5571db98af6714',
    'url'                    => 'https://www.keycaptcha.ru/demo-magnetic/',
]);

Capy

基于令牌的绕过Capy拼图验证码的方法。

$result = $solver->capy([
    'sitekey' => 'PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v',
    'url'     => 'http://mysite.com/',
    'api_server' => 'https://jp.api.capy.me/',
]);

网格

网格方法最初被称为旧ReCaptcha V2方法。此方法可用于绕过任何可以在图像上应用网格并需要点击特定网格框的验证码。返回框的数量。

$result = $solver->grid('path/to/captcha.jpg');

画布

画布方法可用于需要在图像上绘制围绕对象的线的场景。返回绘制多边形所需的一组点的坐标。

$result = $solver->canvas('path/to/captcha.jpg');

点击验证码

ClickCaptcha方法返回验证码图像上点的坐标。如果需要在图像上点击特定的点,则可以使用。

$result = $solver->coordinates('path/to/captcha.jpg');

旋转

此方法可用于解决需要旋转对象的验证码。主要用于绕过FunCaptcha。返回旋转角度。

$result = $solver->rotate('path/to/captcha.jpg');

其他方法

send / getResult

这些方法可用于手动提交验证码和轮询答案。

$id = $solver->send(['file' => 'path/to/captcha.jpg', ...]);

sleep(20);

$code = $solver->getResult($id);

balance

使用此方法获取您的账户余额

$balance = $solver->balance();

report

使用此方法报告好或坏的验证码答案。

$solver->report($id, true); // captcha solved correctly
$solver->report($id, false); // captcha solved incorrectly

错误处理

如果验证码解决程序抛出异常,则非常重要。我们建议使用try catch来处理异常。

try {
    $result = $solver->text('If tomorrow is Saturday, what day is today?');
} catch (\TwoCaptcha\Exception\ValidationException $e) {
    // invalid parameters passed
} catch (\TwoCaptcha\Exception\NetworkException $e) {
    // network error occurred
} catch (\TwoCaptcha\Exception\ApiException $e) {
    // api respond with error
} catch (\TwoCaptcha\Exception\TimeoutException $e) {
    // captcha is not solved so far
}