Envie uma solução de CAPTCHA com Axios

Por solvethree3 min de leitura

Resolva com o SDK de Node.js e use Axios para a solicitação ao destino. Passe o proxy que funcionou para HttpsProxyAgent e defina proxy: false para que o Axios não aplique uma configuração de proxy concorrente. Sua aplicação ainda precisa fornecer os campos do formulário, o valor de CSRF e os cookies da sessão.

Nesta página

Instale e configure o SDK

Use Node.js 22+ e instale as dependências com npm install axios https-proxy-agent https://solvethree.com/downloads/solvethree-sdk-0.1.0.tgz. O SDK oficial é distribuído por essa URL de tarball; não o substitua por um pacote presumido do registro npm.

  • Defina SOLVETHREE_API_KEY com a chave de API do seu workspace. Execute este código no servidor e mantenha a chave lá.
  • Defina SOLVETHREE_PROXY com a URL do proxy usado tanto na resolução quanto no envio.
  • Crie um perfil ativo para o site de destino no console antes da resolução. Fornecer um hostname e uma ação não cria um perfil. Consulte a configuração do perfil do site.
  • Substitua o hostname, a ação e a URL de login do exemplo pelos valores da sua aplicação. site é um hostname, não uma URL completa; a ação deve corresponder à operação no destino.

Resolva e envie pelo proxy que funcionou

client.solve() cria a tarefa e faz consultas até que ela esteja pronta ou uma exceção seja lançada. O exemplo então seleciona o proxy original que funcionou com successfulProxy(input, result) e o usa na solicitação do Axios.

Axios · agente explícito de proxy para o destino
// 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 encaminha a solicitação HTTPS ao destino pelo proxy selecionado. proxy: false desativa a configuração de proxy separada do Axios, deixando o agente no controle. Isso configura a solicitação ao destino, não a conexão do SDK com a API do solvethree. O agente é destruído quando a solicitação termina ou falha.

Mantenha os valores retornados de userAgent e secChUa junto com esse proxy. Não os substitua por cabeçalhos de navegador não relacionados ao enviar o token.

Verifique a resposta da aplicação

A chamada do Axios tem um tempo limite de 30 segundos e não segue redirecionamentos. Como validateStatus aceita qualquer status HTTP, verifique response.status e o corpo da resposta por conta própria; uma resposta de erro HTTP não lançará uma exceção apenas por causa do status.

Uma tarefa pronta significa que uma solução foi gerada, não que o destino a aceitou. Verifique a condição real de sucesso da aplicação, em vez de tratar o status HTTP registrado como prova de um login bem-sucedido.

Execute sua primeira tarefa.

Comece com $5 em créditos no espaço de trabalho.

Criar um espaço de trabalho
Envie uma solução de CAPTCHA com Axios · solvethree