JAVA 캡차 우회
빠른 캡차 확인 우회를 위해 Java 라이브러리 실행. 캡차 해결용 간단한 API.
reCAPTCHA, hCaptcha, Arkose captcha, Geetest 를 우회하기 위한 2Captcha 캡차 해결 서비스 API와의 쉬운 통합 및 기타 캡차 해결을 위한 위한 Java 패키지
빠른 시작설치
스크립트 패키지는 패키지 설치 관리자를 사용하거나 수동으로 설치될 수 있습니다
Maven Central Repository
2captcha-java artifact는 Maven Central에서 다운로드하실 수 있습니다.
API와 쉽게 통합될 수 있는 라이브러리와 모듈을 찾을 수 있는 GitHub 저장소를 방문하시길 바랍니다.
구성
설치된 패키지를 구성하는 데 필요한 모든 파라미터에 관한 설명
TwoCaptcha
클래스의 인스턴스는 다음과 같이 생성될 수 있습니다:
TwoCaptcha solver = new TwoCaptcha('YOUR_API_KEY');
또한 생성된 인스턴스에 대한 일부 옵션을 원하는 대로 바꿀 수도 있습니다:
solver.setSoftId(123);
solver.setCallback("https://your.site/result-receiver");
solver.setDefaultTimeout(120);
solver.setRecaptchaTimeout(600);
solver.setPollingInterval(10);
TwoCaptcha 인스턴스 옵션
옵션 | 기본 값 | 설명 |
---|---|---|
softId | - | 2Captcha 소프트웨어 카탈로그에 게시된 뒤 생성된 귀하의 소프트웨어 아이디 |
callback | - | 캡차 인식 결과를 수신하는 웹 서버의 URL. URL은 계정의 핑백 설정에 먼저 등록되어야 합니다. |
defaultTimeout | 120 | reCAPTCHA를 제외한 모든 캡차 유형에 대한 폴링 시간 초과(초). 모듈이 res.php API 엔드포인트에서 응답을 얻으려고 시도하는 시간을 정의함 |
recaptchaTimeout | 600 | reCAPTCHA의 폴링 시간 초과(초). 모듈이 res.php API 엔드포인트에서 응답을 얻으려고 시도하는 시간을 정의함 |
pollingInterval | 10 | res.php API 엔드포인트로의 요청 사이 간격(초), 5초 미만의 값을 설정하는 것은 권장하지 않음 |
중요:TwoCaptcha
인스턴스에 대해callback
이 정의되면, 모든 수단이 캡차 아이디만 반환하고 결과를 얻기 위해 API를 폴링하지 않습니다. 결과는 콜백 URL로 전송됩니다. 수동으로 답변을 얻으려면 getResult 수단을 사용하십시오.
캡차 해결
이미지 기반 캡차를 제출할 때, {{site_name}의 작업자가 올바르게 캡차를 해결할 수 있도록 추가적인 옵션을 제공할 수 있습니다
캡차 옵션
옵션 | 기본값 | 설명 |
---|---|---|
numeric | 0 | 캡차에 숫자 또는 기타 기호가 포함되어 있는지 여부를 정의합니다 자세한 내용은 API 문서를 참조하십시오 |
minLength | 0 | 답변 최소 글자수 |
maxLength | 0 | 답변 최대 글자수 |
phrase | 0 | 답변에 여러 단어가 포함되어 있는지 여부를 정의 합니다 |
caseSensitive | 0 | 답변이 대소문자를 구분하는지 여부를 정의합니다 |
calc | 0 | 캡차가 계산이 필요한지 정의합니다 |
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 {
solver.solve(captcha);
System.out.println("Captcha solved: " + captcha.getCode());
} catch (Exception e) {
System.out.println("Error occurred: " + e.getMessage());
}
- Normal Captcha
- 텍스트 캡차
- reCAPTCHA V2
- reCAPTCHA V3
- FunCaptcha
- GeeTest
- hCaptcha
- KeyCaptcha
- Capy
- Grid
- Canvas
- ClickCaptcha
- Rotate
일반 캡차 (이미지 속 왜곡된 텍스트)를 우회하려면 다음의 방법을 사용합니다. 또한 해당 방법은 이미지에 있는 텍스트를 인식하는 데 사용될 수 있습니다.
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 File("path/to/hint.jpg"));
captcha.setHintText("Type red symbols only");
해당 방법은 일반 텍스트로 제공된 질문에 대답해야 하는 캡차를 우회하는 데 사용할 수 있습니다.
Text captcha = new Text();
captcha.setText("If tomorrow is Saturday, what day is today?");
captcha.setLang("en");
해당 방법을 사용하면 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");
해당 방법은 reCAPTCHA V3 해결사를 제공하고 토큰을 반환합니다.
ReCaptcha captcha = new ReCaptcha();
captcha.setSiteKey("6Le-wvkSVVABCPBMRTvw0Q4Muexq1bi0DJwx_mJ-");
captcha.setUrl("https://mysite.com/page/with/recaptcha");
captcha.setVersion("v3");
captcha.setAction("verify");
captcha.setScore(0.3);
captcha.setProxy("HTTPS", "login:password@IP_address:PORT");
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 퍼즐 캡차를 해결하는 방법. 토큰 집합을 JSON으로 반환.
해당 방법을 사용하여 hCapcha 문제를 해결하십시오. 캡차를 우회할 토큰 반환.
HCaptcha captcha = new HCaptcha();
captcha.setSiteKey("10000000-ffff-ffff-ffff-000000000001");
captcha.setUrl("https://www.site.com/page/");
captcha.setProxy("HTTPS", "login:password@IP_address:PORT");
KeyCaptcha를 해결할 수 있는 토큰 기반 방법.
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 방법은 원래 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 File("path/to/hint.jpg"));
captcha.setHintText("Select all images with an Orange");
캔버스 방법은 이미지 개체 주위에 선을 그어야 할 때 사용될 수 있습니다. 점의 좌표 집합을 반환하여 다각형을 그립니다.
Canvas captcha = new Canvas();
captcha.setFile("path/to/captcha.jpg");
captcha.setPreviousId(0);
captcha.setCanSkip(false);
captcha.setLang("en");
captcha.setHintImg(new File("path/to/hint.jpg"));
captcha.setHintText("Draw around apple");
ClickCaptcha 방법은 캡처차이미지에 있는 점의 좌표를 반환합니다. 이미지의 특정 지점을 클릭해야 하는 경우 사용할 수 있습니다.
Coordinates captcha = new Coordinates();
captcha.setFile("path/to/captcha.jpg");
captcha.setLang("en");
captcha.setHintImg(new File("path/to/hint.jpg"));
captcha.setHintText("Select all images with an Orange");
해당 방법은 객체를 회전하도록 요청하는 캡차를 해결할 때 사용할 수 있습니다. 대부분 FunCaptcha를 우회하는 데 사용됩니다. 회전 각도 반환.
Rotate captcha = new Rotate();
captcha.setFile("path/to/captcha.jpg");
captcha.setAngle(40);
captcha.setLang("en");
captcha.setHintImg(new File("path/to/hint.jpg"));
captcha.setHintText("Put the images in the correct way up");
다른 방법
기본 스크립트 작업 중에 사용되는 추가적인 유효한 방법들
send / getResult
이러한 방법들은 수동 캡차 제출 및 응답 폴링에 사용될 수 있습니다.
String captchaId = solver.send(captcha);
Thread.sleep(20 * 1000);
String code = solver.getResult(captchaId);
balance
해당 수단을 사용하여 계정의 잔액을 확인하십시오.
double balance = solver.balance();
report
해당 방법을 사용하여 캡차의 답이 정답 또는 잘못된 답인지 보고하십시오.
solver.report(captcha.getId(), true); // captcha solved correctly
solver.report(captcha.getId(), false); // captcha solved incorrectly
오류 처리
요청을 처리할 때 서비스에서 반환된 표준 오류의 가능한 변형
오류가 발생한 경우, 캡차 해결사에서 예외가 발생합니다. 이러한 경우 적절하게 처리하는 것이 중요합니다. 예외를 처리하려면 try/catch
를 사용하는 것을 추천드립니다.
try {
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
}