Что такое капчи?

Любой, кто пользовался Интернетом, должен знать о 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.

  1. На 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.