Что такое капчи?
Любой, кто пользовался Интернетом, должен знать о CAPTCHA. Это онлайн-сервис, позволяющий узнать, что человек взаимодействует или просматривает Интернет, а не робот или автоматизированное программное обеспечение.
CAPTCHA расшифровывается как полностью автоматизированный общедоступный тест Тьюринга, чтобы различать компьютеры и людей.
Без CAPTCHA было бы сложно определить разницу между автоматическим действием, выполняемым ботом, и действием, выполняемым вручную человеком.
Одна из самых популярных CAPTCHA требует, чтобы пользователь вводил буквы, как показано ниже на изображении.
Но в последние годы CAPTCHA развивались различными способами, такими как идентификация распознавания изображений, мини-игры, выбор флажков и многое другое.
Благодаря новым способам CAPTCHA стала одной из самых разочаровывающих и неэффективных функций пользовательского интерфейса. Давайте рассмотрим 2Captcha, которая призвана решить эту проблему.
Что такое 2Captcha?
2Captcha — сервис распознавания изображений и CAPTCHA с участием человека. Цель сервиса — помочь пользователям решать CAPTCHA быстро и точно.
2Captcha также платит вам за решение проблем с капчей. Капчи обычно содержат искаженный текст внутри изображения. Ожидается, что пользователь введет ответ, чтобы получить доступ к веб-сайту и убедиться, что он не робот.
2Captcha решает множество капч. Для интеграции 2Captcha в нашу систему мы можем указать конечные точки их API здесь. Различные типы капчи, такие как hCaptcha, reCaptcha, капча изображения, обычная капча, текстовая капча, могут быть разрешены с помощью сервисов 2Captcha. Мы можем обратиться к полному списку поддерживаемых капч здесь.
Интегрировать 2Captcha
Настройка учетной записи
- Если вы уже зарегистрированы на 2Captcha, мы можем пропустить этот шаг. Если нет, то нам нужно сначала зарегистрироваться на 2Captcha по этой ссылке.
- После регистрации мы получим наш ключ API, который будет использоваться в процессе интеграции. Чтобы воспользоваться услугами 2Captcha, нам необходимо заплатить сумму токена за запросы и обработку капчи.
Решить капчу с помощью 2Captcha и Javascript
Мы создадим новый проект для этой интеграции. Откройте нужную IDE и создайте новое приложение solve-captcha
.
- На Mac мы можем выполнить приведенную ниже команду в терминале.
mkdir solve-captcha
cd solve-captcha
npm init -y
На последнем шаге мы инициализировали проект, используя npm
, что напрямую добавляет package.json
.
2. Создайте файл index.js
Затем мы добавляем новый файл index.js
в корневой каталог проекта. На терминале мы можем выполнить
touch index.js
3. Установите 2Captcha и Axios
Мы можем найти пакет Javascript для 2Captcha здесь. Axios — HTTP-клиент на основе Promise для браузера и node.js.
Мы можем выполнить приведенную ниже команду, чтобы добавить эти два пакета в наше приложение.
npm i 2captcha axios
4. geeksforgeeks.org reCAPTCHA
Немногие веб-сайты используют капчу, когда новые пользователи регистрируются на их платформе. Мы будем использовать geeksforgeeks в нашем примере интеграции.
Так выглядит форма регистрации geekforgeeks.
Как видно выше, geeksforgeeks использует reCAPTCHA от Google для идентификации подлинных пользователей. Интеграция с Google reCAPTCHA осуществляется с помощью ключа сайта. Мы можем найти ключ сайта geeksforgeeks, как указано в Документации API 2Captcha.
Короче говоря, мы ищем www.google.com/recaptcha/api2/anchor или находим параметр data-sitekey. Копируем значение параметра k ссылки или копируем значение параметра data-sitekey. ключ сайта geeksforgeeks: 6LexF0sUAAAAADiQjz9BMiSrqplrItl-tWYDSfWa.
5. Javascript и 2Captcha
Начинаем добавлять изменения в файл index.js.
const axios = require("axios");
const captcha = require("2captcha");
var FormData = require("form-data");
а. Сначала нам потребуются необходимые пакеты для интеграции.
- axios используется для HTTP-запросов.
- 2captcha используется для разгадывания капчи.
- FormData используется для отправки регистрационных данных.
б. Инициализировать решатель 2Captcha с помощью ключа API 2Captcha
const solver = new captcha.Solver("<Our API key>");
в. Решите reCAPTCHA Google, используя метод решения 2Captcha.
Пакет 2captcha предоставляет метод recaptcha для разрешения reCAPTCHA. Он ожидает sitekey и pageurl в качестве параметров.
const { data } = await solver.recaptcha(
"6LexF0sUAAAAADiQjz9BMiSrqplrItl-tWYDSfWa",
"https://www.geeksforgeeks.org/"
);
д. Отправить данные формы.
Получив ответ метода recaptcha, мы создаем данные формы для передачи необходимых данных в конечную точку аутентификации geeksforgeeks.
var bodyFormData = new FormData();
bodyFormData.append("reqType", "Register");
bodyFormData.append("email", "[email protected]");
bodyFormData.append("pass", "sam1234!@#$");
bodyFormData.append("institute", "big data");
bodyFormData.append("g-recaptcha-response", data);
bodyFormData.append("to", "https://auth.geeksforgeeks.org/?to=https://www.geeksforgeeks.org/");
Мы используем Axios для отправки сгенерированных выше данных формы.
axios({
method: "post",
url: "https://auth.geeksforgeeks.org/auth.php",
data: bodyFormData,
headers: {
"Content-Type": "application/x-www-form-urlencoded",
"Accept": "application/json, text/javascript, */*; q=0.01"
},
})
.then(function (response) {
console.log("In success");
console.log(response.data);
})
.catch(function (response) {
console.log("In failure");
console.log(response);
});
Весь файл index.js будет выглядеть следующим образом:
const axios = require("axios"); const captcha = require("2captcha"); var FormData = require('form-data');
const solver = new captcha.Solver("<My API key>");
const bypassWebsiteCaptcha = async () => { console.log("Initiate captcha process");
try { const { data } = await solver.recaptcha( "6LexF0sUAAAAADiQjz9BMiSrqplrItl-tWYDSfWa", "https://www.geeksforgeeks.org/" );
var bodyFormData = new FormData(); bodyFormData.append("reqType", "Register"); bodyFormData.append("email", "[email protected]"); bodyFormData.append("pass", "sam1234!@#$"); bodyFormData.append("institute", "big data"); bodyFormData.append("g-recaptcha-response", data); bodyFormData.append("to", "https://auth.geeksforgeeks.org/?to=https://www.geeksforgeeks.org/");
axios({ method: "post", url: "https://auth.geeksforgeeks.org/auth.php", data: bodyFormData, headers: { "Content-Type": "application/x-www-form-urlencoded", "Accept": "application/json, text/javascript, */*; q=0.01" }, }) .then(function (response) { console.log("In success"); console.log(response.data); }) .catch(function (response) { console.log("In failure"); console.log(response); }); } catch (err) { console.log("In catch"); console.log(err); } };
bypassWebsiteCaptcha();
ПРИМЕЧАНИЕ
Мы добавили шаги 5.c и 5.d в блок try..catch.
е. Выполнить index.js
Запустите приведенную ниже команду и проверьте ответ
node index
Наш ответ должен выглядеть следующим образом:
Alkeshs-MacBook-Pro:solve-captcha alkeshghorpade$ node index
Initiate captcha process
In success
{"extra":"<div class=\"alert alert-info\">An email has been sent to your given address. Please click the link in the mail to continue.<\/div>","code":2000}
Это означает, что мы успешно обошли капчу. Мы можем обратиться к репозиторию полного кода здесь.
ПРИМЕЧАНИЕ
Многие веб-сайты, такие как geekforgeeks, используют капчи. Этот блог предназначен исключительно для образовательных целей. Пожалуйста, не используйте вышеуказанные шаги для чего-либо вредоносного.
Первоначально опубликовано на https://alkeshghorpade.me.