Axios로 CAPTCHA 솔루션 제출하기

작성: solvethree읽는 데 2분

Node.js SDK로 풀이한 다음, 대상 요청에는 Axios를 사용하세요. 성공한 프록시를 HttpsProxyAgent에 전달하고 proxy: false를 설정해 Axios가 충돌하는 프록시 설정을 적용하지 않도록 하세요. 폼 필드, CSRF 값, 세션 쿠키는 여전히 애플리케이션에서 제공해야 합니다.

이 페이지의 내용

SDK 설치 및 구성

Node.js 22+를 사용하고 npm install axios https-proxy-agent https://solvethree.com/downloads/solvethree-sdk-0.1.0.tgz로 의존성을 설치하세요. 공식 SDK는 해당 tarball URL로 배포됩니다. npm 레지스트리에 패키지가 있을 것이라고 가정해 대신 사용하지 마세요.

  • SOLVETHREE_API_KEY를 워크스페이스 API 키로 설정하세요. 이 코드는 서버에서 실행하고 키도 서버에 보관하세요.
  • SOLVETHREE_PROXY를 풀이와 제출 모두에 사용할 프록시 URL로 설정하세요.
  • 풀이 전에 콘솔에서 대상 사이트의 활성 프로필을 생성하세요. 호스트 이름과 작업을 제공하는 것만으로는 프로필이 생성되지 않습니다. 사이트 프로필 설정을 참고하세요.
  • 예제의 호스트 이름, 작업, 로그인 URL을 애플리케이션의 값으로 바꾸세요. site는 전체 URL이 아니라 호스트 이름이며, 작업은 대상 작업과 일치해야 합니다.

풀이 후 성공한 프록시를 통해 제출

client.solve()는 작업을 생성하고 준비될 때까지 폴링하거나 예외를 발생시킵니다. 이후 예제는 successfulProxy(input, result)로 원래 성공한 프록시를 선택하고 Axios 요청에 사용합니다.

Axios · 명시적인 대상 프록시 에이전트
// npm install axios https-proxy-agent and the official solvethree SDK tarball.
import axios from 'axios';
import { HttpsProxyAgent } from 'https-proxy-agent';
import { Solvethree, successfulProxy } from '@solvethree/sdk';
const client = new Solvethree({ apiKey: process.env.SOLVETHREE_API_KEY });
const input = { site: 'accounts.example.com', action: 'login', proxy: process.env.SOLVETHREE_PROXY };
const result = await client.solve(input);
const proxy = successfulProxy(input, result);
if (!proxy) throw new Error('No valid successful proxy');
const agent = new HttpsProxyAgent(proxy);
try {
  const response = await axios.post('https://accounts.example.com/login',
    new URLSearchParams({ 'g-recaptcha-response': result.solution.token }).toString(), {
      httpsAgent: agent, proxy: false, maxRedirects: 0, timeout: 30000,
      headers: { 'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': result.solution.userAgent, 'sec-ch-ua': result.solution.secChUa },
      validateStatus: () => true,
    });
  console.log('Application HTTP status:', response.status);
  // Add the application's real form fields, CSRF value and session cookies.
} finally { agent.destroy(); }

httpsAgent는 선택한 프록시를 통해 HTTPS 대상 요청을 라우팅합니다. proxy: false는 Axios의 별도 프록시 설정을 비활성화해 에이전트가 제어하도록 합니다. 이 설정은 대상 요청에 적용되며, SDK의 solvethree API 연결에는 적용되지 않습니다. 요청이 완료되거나 실패하면 에이전트가 제거됩니다.

반환된 userAgent와 secChUa 값을 해당 프록시와 함께 유지하세요. 토큰을 제출할 때 관련 없는 브라우저 헤더로 바꾸지 마세요.

애플리케이션 응답 확인

Axios 호출의 타임아웃은 30초이며 리디렉션을 따르지 않습니다. validateStatus가 모든 HTTP 상태를 허용하므로 response.status와 응답 본문을 직접 확인해야 합니다. HTTP 오류 응답은 상태 코드만으로 예외를 발생시키지 않습니다.

작업이 준비되었다는 것은 솔루션이 생성되었다는 뜻이지, 대상이 이를 수락했다는 뜻은 아닙니다. 로그에 기록된 HTTP 상태를 로그인 성공의 증거로 삼지 말고 애플리케이션의 실제 성공 조건을 확인하세요.

첫 작업을 실행하세요.

워크스페이스 크레딧 $5로 시작하세요.

워크스페이스 만들기
Axios로 CAPTCHA 솔루션 제출하기 · solvethree