@qso-soft/shared
Version:
Shared library for QSO-soft
70 lines • 2.68 kB
JavaScript
import axios from 'axios';
import { getHeaders, sleep } from '../utils';
import { isFunCaptchaTask, isImageToCoordsCaptchaTask, isRecaptchaTask, isTurnstileTask, } from './anticaptcha-types';
const ANTICAPTCHA_API_URL = 'https://api.anti-captcha.com';
const getTaskResult = async (taskId, headers) => {
const { data: resultData } = await axios.post(`${ANTICAPTCHA_API_URL}/getTaskResult`, {
clientKey: QsoGlobal.ANTICAPTCHA_KEY,
taskId,
}, { headers });
return resultData;
};
export const getAnticaptcha = async ({ proxyObject, websiteURL, logger, taskType, options }) => {
try {
let proxyAgentObject = {};
if (proxyObject) {
const { proxyType, proxyLogin, proxyPort, proxyIp, proxyPass } = proxyObject;
proxyAgentObject = {
proxyType: proxyType.toLowerCase(),
proxyPort,
proxyLogin,
proxyAddress: proxyIp,
proxyPassword: proxyPass,
};
}
logger?.info('Processing anticaptcha...');
const headers = getHeaders();
const baseTaskData = {
websiteURL,
type: taskType,
...proxyAgentObject,
};
const { data } = await axios.post(`${ANTICAPTCHA_API_URL}/createTask`, {
clientKey: QsoGlobal.ANTICAPTCHA_KEY,
task: {
...baseTaskData,
...options,
},
}, { headers });
const createdTaskData = data;
if (createdTaskData.errorDescription) {
throw new Error(createdTaskData.errorDescription);
}
let resultData = await getTaskResult(createdTaskData.taskId, headers);
while (resultData.status === 'processing') {
await sleep(10);
resultData = await getTaskResult(createdTaskData.taskId, headers);
}
if (resultData.errorDescription) {
throw new Error(resultData.errorDescription);
}
if (resultData.solution) {
if (isRecaptchaTask(taskType)) {
return resultData.solution.gRecaptchaResponse;
}
if (isImageToCoordsCaptchaTask(taskType)) {
return resultData.solution.coordinates;
}
if (isTurnstileTask(taskType) || isFunCaptchaTask(taskType)) {
return resultData.solution.token;
}
return resultData.solution;
}
throw new Error('Unable to get anticaptcha solution');
}
catch (err) {
const error = err;
throw new Error(error.message);
}
};
//# sourceMappingURL=get-anticaptcha.js.map