Перейти к основному содержимому
Возникают проблемы с получением токена?
Свяжитесь с поддержкой

Imperva (Incapsula)

Ещё больше по теме в нашем блоге
Внимание!
  • Для выполнения данной задачи используйте ваши собственные прокси.

  • Если прокси с авторизацией по IP, то необходимо добавить адрес 65.21.190.34 в белый список.

  • После решения вы получите специальные cookie, которые необходимо добавить в браузер.

Параметры запроса


ВАЖНО: значения некоторых параметров являются динамическими — они меняются при каждом рендеринге страницы с Imperva.
Извлекайте их непосредственно перед созданием задачи, чтобы избежать ошибок при решении. Примеры автоматического извлечения параметров см. в разделе Как найти все нужные параметры для создания задачи.


type<string>required

CustomTask


class<string>required

Imperva


websiteURL<string>required

Адрес основной страницы, на которой находится инкапсула.


incapsulaScriptUrl (внутри metadata)<string>required

"incapsulaScriptUrl": "_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3" — название js файла инкапсулы


incapsulaCookies (внутри metadata)<string>required

Ваши куки от Incapsula. Можно получить на странице с помощью document.cookie или в заголовке запроса Set-Cookie: "incap_sess_*=...; visid_incap_*=..." (см. пример запроса /createTask)


proxyType<string>required

http - обычный http/https прокси;
https - используйте только если http не работает;
socks4 - socks4 прокси;
socks5 - socks5 прокси.


proxyAddress<string>required

IP адрес прокси IPv4/IPv6. Не допускается:

  • использование прозрачных прокси;
  • использование прокси на локальных машинах.


proxyPort<integer>required

Порт прокси.


proxyLogin<string>required

Логин прокси-сервера.


proxyPassword<string>required

Пароль прокси-сервера.


reese84UrlEndpoint (внутри metadata)<string>optional

Название эндпоинта, куда отправляется reese84 fingerprint. Можно найти среди запросов, оканчивается на ?d=site.com


userAgent<string>optional

User-Agent браузера.
Передавайте только актуальный UA от ОС Windows. Сейчас таковым является: userAgentPlaceholder

Метод создания задачи

POST
https://api.capmonster.cloud/createTask

Запрос

{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "Imperva",
"websiteURL": "https://example.com",
"userAgent": "userAgentPlaceholder",
"metadata": {
"incapsulaScriptUrl": "_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3",
"incapsulaCookies": "incap_ses_1166_2930313=br7iX33ZNCtf3HlpEXcuEDzz72cAAAAA0suDnBGrq/iA0J4oERYzjQ==; visid_incap_2930313=P3hgPVm9S8Oond1L0sXhZqfK72cAAAAAQUIPAAAAAABoMSY9xZ34RvRseJRiY6s+;",
"reese84UrlEndpoint": "Built-with-the-For-hopence-Hurleysurfecting-the-"
},
"proxyType": "http",
"proxyAddress": "8.8.8.8",
"proxyPort": 8080,
"proxyLogin": "proxyLoginHere",
"proxyPassword": "proxyPasswordHere"
}
}

Ответ

{
"errorId": 0,
"taskId": 407533072
}

Метод получения результата задачи

Используйте метод getTaskResult, чтобы получить решение Imperva.

POST
https://api.capmonster.cloud/getTaskResult

Запрос

{
"clientKey":"API_KEY",
"taskId": 407533072
}

Ответ

{
"errorId":0,
"status":"ready",
"solution": {
"domains": {
"https://example.com": {
"cookies": {
"___utmvc": "NMB+nRa4inxXNeXuhPl9w4opzdo...E4OTU2OGEwNzI2ODlkODc4MWIwNmU3MQ==; Max-Age=31536000; Domain=.site.com; Path=/; Secure; SameSite=Lax"
}
}
}
}
}

Access denied

Error 16 - данная ошибка связана с применением прокси-серверов, не соответствующих требуемой геолокации.

Как найти все нужные параметры для создания задачи

Автоматически

Для автоматизации поиска параметров их можно извлекать через браузер (обычный или headless, например, с Playwright) или напрямую из HTTP-запросов. Поскольку значения динамических параметров действуют недолго, их рекомендуется использовать сразу после получения.

Важно!

Приведённые фрагменты кода являются базовыми примерами для ознакомления в извлечении необходимых параметров. Точная реализация будет зависеть от вашего сайта с капчей, его структуры и используемых HTML-элементов и селекторов.

Показать код (Node.js)
import { chromium } from "playwright";

(async () => {
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();

await page.goto("https://www.example.com/");

// Извлекаем значение атрибута src из iframe с id main-iframe
const iframeSrc = await page.$eval("#main-iframe", (iframe) =>
iframe.getAttribute("src")
);
console.log("iframe src:", iframeSrc);

// Получаем все cookies
const cookies = await page.context().cookies();

// Фильтруем cookies, которые начинаются с visid_incap_ или incap_ses_
const filteredCookies = cookies.filter(
(cookie) =>
cookie.name.startsWith("visid_incap_") ||
cookie.name.startsWith("incap_ses_")
);

filteredCookies.forEach((cookie) => {
console.log(`${cookie.name}=${cookie.value}`);
});

await browser.close();
})();

Используйте библиотеку SDK

Показать код (для браузера)
// https://github.com/ZennoLab/capmonstercloud-client-js

import { CapMonsterCloudClientFactory, ClientOptions, ImpervaRequest } from '@zennolab_com/capmonstercloud-client';

const API_KEY = "YOUR_API_KEY"; // Укажите ваш API-ключ CapMonster Cloud

document.addEventListener("DOMContentLoaded", async () => {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);

// При необходимости можно проверить баланс
const balance = await cmcClient.getBalance();
console.log("Balance:", balance);

const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};

// Настройка задачи Imperva (Incapsula)
const impervaRequest = new ImpervaRequest({
websiteURL: "https://example.com/", // URL вашей страницы, защищённой Imperva
metadata: {
incapsulaScriptUrl: "_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3",
incapsulaCookies: "incap_ses_1166_2930313=br7iX33ZNCtf3HlpEXcuEDzz72cAAAAA0suDnBGrq/iA0J4oERYzjQ==; visid_incap_2930313=P3hgPVm9S8Oond1L0sXhZqfK72cAAAAAQUIPAAAAAABoMSY9xZ34RvRseJRiY6s+;"
},
proxy
});

const result = await cmcClient.Solve(impervaRequest);
console.log("Solution:", result.solution);
});
Показать код (Node.js)
// https://github.com/ZennoLab/capmonstercloud-client-js

import { CapMonsterCloudClientFactory, ClientOptions, ImpervaRequest } from '@zennolab_com/capmonstercloud-client';

async function main() {
const cmcClient = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: 'YOUR_API_KEY' }) // Укажите ваш API-ключ CapMonster Cloud
);

// При необходимости можно проверить баланс
const balance = await cmcClient.getBalance();
console.log('Balance:', balance);

const proxy = {
proxyType: "http",
proxyAddress: '123.45.67.89',
proxyPort: 8080,
proxyLogin: 'username',
proxyPassword: 'password'
};

// Настройка задачи Imperva (Incapsula)
const impervaRequest = new ImpervaRequest({
websiteURL: 'https://example.com/', // URL вашей страницы, защищённой Imperva
metadata: {
incapsulaScriptUrl: '_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3',
incapsulaCookies: 'incap_ses_1166_2930313=br7iX33ZNCtf3HlpEXcuEDzz72cAAAAA0suDnBGrq/iA0J4oERYzjQ==; visid_incap_2930313=P3hgPVm9S8Oond1L0sXhZqfK72cAAAAAQUIPAAAAAABoMSY9xZ34RvRseJRiY6s+;',
},
proxy,
});

const result = await cmcClient.Solve(impervaRequest);
console.log('Solution:', result.solution);
}

main().catch(console.error);