C#을 사용한 캡차 우회

C#을 사용한 캡차 우회

자동 캡차 입력용 C# 라이브러리를 통합합니다. API는 모든 스크립트에 통합될 수 있습니다.

reCAPTCHA, Arkose captcha, Geetest 를 우회하기 위한 2Captcha 캡차 해결 서비스 API와의 쉬운 통합 및 기타 캡차 해결을 위한 위한 CSharp 패키지

빠른 시작

설치

스크립트 패키지는 패키지 설치 관리자를 사용하거나 수동으로 설치될 수 있습니다

NuGet

라이브러리 패키지를 자동으로 설치하려면 CSharp 패키지용 표준 해결 방법 NuGet을 사용해야 합니다. 링크에서 다운로드하시고, 지침에 따라 설치하십시오. 응용 프로그램을 설치한 후, 꼭 필요한 라이브러리 패키지패키지도 설치하십시오

API와 쉽게 통합될 수 있는 라이브러리와 모듈을 찾을 수 있는 GitHub 저장소를 방문하시길 바랍니다.

구성

설치된 패키지를 구성하는 데 필요한 모든 파라미터에 관한 설명

TwoCaptcha 클래스의 인스턴스는 다음과 같이 생성될 수 있습니다:

TwoCaptcha solver = new TwoCaptcha('YOUR_API_KEY');

또한 생성된 인스턴스에 대한 일부 옵션을 원하는 대로 바꿀 수도 있습니다:

solver.SoftId = 123;
solver.Callback = "https://your.site/result-receiver";
solver.DefaultTimeout = 120;
solver.RecaptchaTimeout = 600;
solver.PollingInterval = 10;
TwoCaptcha 인스턴스 옵션
옵션기본 값설명
softId-2Captcha 소프트웨어 카탈로그에 게시된 뒤 생성된 귀하의 소프트웨어 아이디
callback-캡차 인식 결과를 수신하는 웹 서버의 URL. URL은 계정의 핑백 설정에 먼저 등록되어야 합니다.
defaultTimeout120reCAPTCHA를 제외한 모든 캡차 유형에 대한 폴링 시간 초과(초). 모듈이 res.php API 엔드포인트에서 응답을 얻으려고 시도하는 시간을 정의함
recaptchaTimeout600reCAPTCHA의 폴링 시간 초과(초). 모듈이 res.php API 엔드포인트에서 응답을 얻으려고 시도하는 시간을 정의함
pollingInterval10res.php API 엔드포인트로의 요청 사이 간격(초), 5초 미만의 값을 설정하는 것은 권장하지 않음
중요: TwoCaptcha 인스턴스에 대해 callback이 정의되면, 모든 수단이 캡차 아이디만 반환하고 결과를 얻기 위해 API를 폴링하지 않습니다. 결과는 콜백 URL로 전송됩니다. 수동으로 답변을 얻으려면 getResult 수단을 사용하십시오.

캡차 해결

이미지 기반 캡차를 제출할 때, {{site_name}의 작업자가 올바르게 캡차를 해결할 수 있도록 추가적인 옵션을 제공할 수 있습니다

캡차 옵션
옵션기본값설명
numeric0캡차에 숫자 또는 기타 기호가 포함되어 있는지 여부를 정의합니다 자세한 내용은 API 문서를 참조하십시오
minLength0답변 최소 글자수
maxLength0답변 최대 글자수
phrase0답변에 여러 단어가 포함되어 있는지 여부를 정의합니다
caseSensitive0답변이 대소문자를 구분하는지 여부를 정의합니다
calc0캡차가 계산이 필요한지 정의합니다
lang-캡차 언어를 정의합니다, 지원하는 언어 목록을 참조하십시오
hintImg-캡차를 해결할 작업자에게 힌트가 표시된 이미지
hintText-캡차를 해결할 작업자에게 표시되는 힌트 또는 작업 텍스트

기본 예제

하단의 예시는 오류 처리가 포함된 기본적인 해결사 콜 예제를 보여줍니다.

Normal captcha = new Normal();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetMinLen(4);
captcha.SetMaxLen(20);
captcha.SetCaseSensitive(true);
captcha.SetLang("en");

try
{
    await solver.Solve(captcha);
    Console.WriteLine("Captcha solved: " + captcha.Code);
}
catch (Exception e)
{
    Console.WriteLine("Error occurred: " + e.Message);
}
simpleCaptcha

일반 캡차 (이미지 속 왜곡된 텍스트)를 우회하려면 다음의 방법을 사용합니다. 또한 해당 방법은 이미지에 있는 텍스트를 인식하는 데 사용될 수 있습니다.

Normal captcha = new Normal();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetNumeric(4);
captcha.SetMinLen(4);
captcha.SetMaxLen(20);
captcha.SetPhrase(true);
captcha.SetCaseSensitive(true);
captcha.SetCalc(false);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Type red symbols only");
textCaptcha

해당 방법은 일반 텍스트로 제공된 질문에 대답해야 하는 캡차를 우회하는 데 사용할 수 있습니다.

Text captcha = new Text();
captcha.SetText("If tomorrow is Saturday, what day is today?");
captcha.SetLang("en");
recaptchaV2

해당 방법을 사용하면 reCAPTCHA V2를 해결하고, 토큰을 가져와 보호를 우회할 수 있습니다.

ReCaptcha captcha = new ReCaptcha();
captcha.SetSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
captcha.SetUrl("https://mysite.com/page/with/recaptcha");
captcha.SetInvisible(true);
captcha.SetAction("verify");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
recaptchaV3

해당 방법은 reCAPTCHA V3 해결사를 제공하고 토큰을 반환합니다.

ReCaptcha captcha = new ReCaptcha();
captcha.SetSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
captcha.SetUrl("https://mysite.com/page/with/recaptcha");
captcha.SetVersion("v3");
captcha.SetDomain("google.com");
captcha.SetAction("verify");
captcha.SetScore(0.3);
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
funCaptcha

FunCaptcha (Arkoselabs) 해결 방법. 토큰 반환.

FunCaptcha captcha = new FunCaptcha();
captcha.SetSiteKey("69A21A01-CC7B-B9C6-0F9A-E7FA06677FFC");
captcha.SetUrl("https://mysite.com/page/with/funcaptcha");
captcha.SetSUrl("https://client-api.arkoselabs.com");
captcha.SetUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36");
captcha.SetData("anyKey", "anyValue");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
GeeTest

GeeTest 퍼즐 캡차를 해결하는 방법. 토큰 집합을 JSON으로 반환.

KeyCaptcha

KeyCaptcha를 해결할 수 있는 토큰 기반 방법.

capy

Capy 퍼즐 캡차를 우회할 수 있는 토큰 기반 방법.

Capy captcha = new Capy();
captcha.SetSiteKey("PUZZLE_Abc1dEFghIJKLM2no34P56q7rStu8v");
captcha.SetUrl("https://www.mysite.com/captcha/");
captcha.SetProxy("HTTPS", "login:password@IP_address:PORT");
grid

Grid 방법은 원래 Old reCAPTCHA V2 방법이라고도 알려져 있습니다. 해당 방법은 이미지에 그리드를 적용할 수 있고, 특정 그리드 상자를 클릭해야 하는 모든 유형의 캡차를 우회하는 데 사용할 수 있습니다. 박스 수 반환.

Grid captcha = new Grid();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetRows(3);
captcha.SetCols(3);
captcha.SetPreviousId(0);
captcha.SetCanSkip(false);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Select all images with an Orange");
canvas

캔버스 방법은 이미지 개체 주위에 선을 그어야 할 때 사용될 수 있습니다. 점의 좌표 집합을 반환하여 다각형을 그립니다.

Canvas captcha = new Canvas();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetPreviousId(0);
captcha.SetCanSkip(false);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Draw around apple");
clickCaptcha

ClickCaptcha 방법은 캡처차이미지에 있는 점의 좌표를 반환합니다. 이미지의 특정 지점을 클릭해야 하는 경우 사용할 수 있습니다.

Coordinates captcha = new Coordinates();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Select all images with an Orange");
rotateCaptcha

해당 방법은 객체를 회전하도록 요청하는 캡차를 해결할 때 사용할 수 있습니다. 대부분 FunCaptcha를 우회하는 데 사용됩니다. 회전 각도 반환.

Rotate captcha = new Rotate();
captcha.SetFile("path/to/captcha.jpg");
captcha.SetAngle(40);
captcha.SetLang("en");
captcha.SetHintImg(new FileInfo("path/to/hint.jpg"));
captcha.SetHintText("Put the images in the correct way up");

다른 방법

기본 스크립트 작업 중에 사용되는 추가적인 유효한 방법들

send / getResult

이러한 방법들은 수동 캡차 제출 및 응답 폴링에 사용될 수 있습니다.

string captchaId = await solver.Send(captcha);

Task.sleep(20 * 1000);

string code = await solver.GetResult(captchaId);

balance

해당 수단을 사용하여 계정의 잔액을 확인하십시오.

double balance = await solver.Balance();

report

해당 방법을 사용하여 캡차의 답이 정답 또는 잘못된 답인지 보고하십시오.

await solver.Report(captcha.Id, true); // captcha solved correctly
await solver.Report(captcha.Id, false); // captcha solved incorrectly

오류 처리

요청을 처리할 때 서비스에서 반환된 표준 오류의 가능한 변형

오류가 발생한 경우, 캡차 해결사에서 예외가 발생합니다. 이러한 경우 적절하게 처리하는 것이 중요합니다. 예외를 처리하려면 try/catch 를 사용하는 것을 추천드립니다.

try
{
    await solver.Solve(captcha);
}
catch (ValidationException e)
{
    // invalid parameters passed
}
catch (NetworkException e)
{
    // network error occurred
}
catch (ApiException e)
{
    // api respond with error
}
catch (TimeoutException e)
{
    // captcha is not solved so far
}

서비스 API와의 통합할 수 있는 기타 언어