cURL로 reCAPTCHA Enterprise 토큰 요청하기
사이트 호스트 이름, 액션, 프록시로 작업을 생성하세요. pending 또는 solving이 반환되면 반환된 작업 ID로 폴링하세요. 상태가 ready일 때만 solution.token에서 토큰을 읽으세요.
이 페이지의 내용
사이트, 키, 프록시 준비
- 셸에서 cURL과 jq를 사용할 수 있도록 준비하세요.
SOLVETHREE_API_KEY를 워크스페이스 API 키로 설정하세요. 이 명령은 서버 측에서 실행하고 키를 브라우저 코드에 넣지 마세요.SOLVETHREE_PROXY를 해결 및 토큰 제출에 사용할 프록시 URL로 설정하세요.- 콘솔에서 워크스페이스의 활성 reCAPTCHA 사이트 프로필을 설정하세요. 예제의
accounts.example.com과login을 호스트 이름과 액션으로 바꾸세요.
호스트 이름과 액션을 보내도 사이트 프로필이 생성되지는 않습니다. 해결을 요청하기 전에 프로필이 이미 활성 상태여야 합니다.
대기 시간을 명시하여 작업 생성
# Set SOLVETHREE_API_KEY and SOLVETHREE_PROXY in your environment first.
# Replace the hostname and action with your active site profile.
jq -n \
--arg proxy "$SOLVETHREE_PROXY" \
--arg requestId "login-$(date +%s)-$$" \
'{site:"accounts.example.com", action:"login", proxy:$proxy, requestId:$requestId}' \
| curl --fail-with-body --max-time 30 \
'https://api.solvethree.com/v1/tasks?waitMs=15000' \
-H "Authorization: Bearer $SOLVETHREE_API_KEY" \
-H 'Content-Type: application/json' \
--data-binary @-JSON 본문은 site, action, 단일 proxy를 제공합니다. proxy와 proxyCandidates 중 정확히 하나가 필요합니다. type이나 url을 추가하지 마세요. recaptchaType을 생략하면 enterprise-v3이 선택됩니다.
waitMs=15000 쿼리 매개변수는 생성 요청이 최대 15초 동안 대기하도록 지정합니다. JSON 본문이 아닌 URL에 넣어야 합니다. cURL 시간 제한은 30초로, 서버 측 대기 시간 외에 네트워크 오버헤드를 위한 여유를 둡니다. 응답이 도착해도 작업이 아직 종료되지 않은 상태일 수 있습니다.
응답 확인 및 미완료 작업 폴링
본문을 작업 응답으로 해석하기 전에 HTTP 오류를 확인하세요. 두 명령 모두 --fail-with-body를 사용합니다. 실패한 HTTP 요청과 상태가 failed인 작업을 별도로 처리하세요.
준비된 응답의 구조는 다음과 같습니다. 아래 값은 자리표시자이며 제출할 수 있는 토큰이 아닙니다.
{
"id": "example-task",
"status": "ready",
"solution": {
"token": "EXAMPLE_TOKEN",
"userAgent": "EXAMPLE_USER_AGENT",
"secChUa": "EXAMPLE_CLIENT_HINTS"
}
}| 상태 | 다음 작업 |
|---|---|
| 대기 중 또는 해결 중 | 반환된 id를 보관하고 동일한 작업을 조회하세요. 아직 사용할 수 있는 솔루션이 없으므로 대체 작업을 생성하지 마세요. |
| ready | 폴링을 중단하고 solution.token, solution.userAgent, solution.secChUa를 읽으세요. |
| 실패 | 폴링을 중단하고 errorCode와 error를 확인하세요. 실패한 해결 요청은 환불됩니다. 다른 작업을 시작하기 전에 원인을 해결하세요. |
아직 종료되지 않은 응답이라면 환경의 TASK_ID를 반환된 id로 설정한 다음 작업을 조회하세요:
curl --fail-with-body --max-time 30 \
"https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
-H "Authorization: Bearer $SOLVETHREE_API_KEY"이 GET은 결과를 최대 15초 동안 기다리며 HTTP 시간 제한은 30초입니다. waitMs가 없으면 GET은 대기하지 않고 반환됩니다. 상태가 pending 또는 solving인 동안에만 GET을 반복하고, 폴링 루프가 무한히 실행되지 않도록 호출 측에서 전체 기한을 설정하세요.
작업이 실패하면 크레딧 문제라고 가정하지 말고 오류 세부 정보를 활용하세요. 예를 들어 site-unreachable이 발생하면 변경 없는 입력을 무작정 다시 제출할 것이 아니라 대상에 연결할 수 있는지 확인해야 합니다.
토큰 제출
대상 애플리케이션의 요청에 solution.token을 사용하세요. 작업 id는 작업 조회용일 뿐 CAPTCHA 토큰이 아닙니다. 토큰을 넣을 위치는 대상의 폼이나 API에 따라 다르므로, 모든 대상에 공통으로 사용할 수 있는 제출 명령은 없습니다.
토큰을 제출할 때는 반환된 solution.userAgent와 solution.secChUa를 해결에 성공한 프록시와 함께 사용하세요. 위의 단일 프록시 예제에서는 동일한 SOLVETHREE_PROXY를 사용하세요. 관련 없는 브라우저 식별 정보나 대상 URL을 섞어 사용하지 마세요.
ready는 solvethree가 솔루션을 생성했다는 뜻입니다. 대상 애플리케이션이 요청을 수락했는지는 해당 애플리케이션의 응답을 별도로 확인하세요.
기타 질문
Google의 siteverify API와 같은 기능인가요?
아닙니다. Google의 siteverify는 이미 존재하는 토큰을 검사하며 웹사이트 소유자의 검증용 비밀 키가 필요합니다. solvethree API는 워크스페이스 API 키를 사용해 솔루션을 생성합니다. 작업 요청에 Google 검증용 비밀 키를 넣지 마세요.
출처 및 API 레퍼런스
첫 작업을 실행하세요.
워크스페이스 크레딧 $5로 시작하세요.