October 19

Story Protocol официальный кран - гайд по автоматизации

Канал в тг: https://t.me/PastFinCoding

Сегодня мы будем обходить десятерную защиту сайта https://faucet.story.foundation/, чтобы клеймить IP на кошельки c нулевым или маленьким гитпаспортом.

Требования

  • Node.js: необходим для запуска кода, написанного с использованием библиотеки на основе Puppeteer. Моя версия: 20.17.0
  • Git: требуется для загрузки моего кода.
  • Visual Studio Code (опционально): рекомендую использовать для написания и запуска кода.

Node.js можно скачать по ссылке: Node.js Download. У меня установлена версия 20.17.0, установите такую же. Во время установки просто соглашайтесь со всеми дефолтными параметрами. После завершения установки откройте новое окно командной строки и выполните команду:

node --version

Если всё установлено правильно, будет выведена версия Node.js.

Git можно скачать здесь: Git Download. Во время установки также соглашайтесь со всеми параметрами. После завершения установки откройте новое окно командной строки и выполните команду:

git --version

Будет показана установленная версия Git.

Скачать Visual Studio Code можно по следующей ссылке: VS Code Download, если вы ещё не установили его.

Логика работы кода

  1. Открывается браузер Chrome (с прокси или без).
  2. Запускается MetaMask.
  3. Создаётся новый аккаунт в MetaMask.
  4. Добавляется ваш приватный ключ как второй аккаунт для подключения к крану Story.
  5. Добавляется тестовая сеть.
  6. Переход на сайт с краном.
  7. Автоматическое прохождение CAPTCHA от Cloudflare.
  8. Кошелёк добавляется на сайт.
  9. Выполняется клейм одного IP.
  10. Закрывается браузер.
  11. Процесс повторяется для следующего кошелька.

Также автоматически ведётся запись логов в файл log.txt после запуска кода. Логи необходимы для анализа ошибок — вы сможете увидеть, когда и на каком этапе произошла ошибка, а также какой кошелёк использовался.

Подготовка кода к запуску

1) Создайте папку для проекта StoryFaucet

2) Откройте папку в Visual Studio Code,запустите терминал и клонируйте репозиторий с помощью команды:

git clone https://github.com/Pastfin/StoryFaucet.git .

В результате вы получите следующие файлы:

index.js — основной код, который будет запускаться.
metamask.js — работа с MetaMask.
helpers.js — вспомогательные функции, чтобы сделать основной код более чистым.
package-lock.json; package.json — файлы зависимостей с версиями библиотек.
wallets.xlsx — Excel-файл, в который нужно записать кошельки для крана. Столбцы: публичный ключ, приватный ключ, прокси (опционально), комментарий (только для вас, не используется в коде). Приватный ключ используется только при добавлении кошелька в MetaMask.

3) Установите библиотеки. Для этого в терминале, находясь в папке проекта, выполните команду:

npm install

После выполнения команды должна появиться папка node_modules. Это означает, что все зависимости были установлены успешно.

4) Добавьте расширение MetaMask в проект. Так как в коде используется MetaMask, необходимо добавить расширение в папку с проектом. Лучше всего сделать это на новом профиле Chrome.

  • Создайте новый профиль в браузере Chrome.
  • Установите MetaMask на новый профиль (настраивать кошелёк не нужно): MetaMask в Chrome.
  • Затем откройте новую вкладку в Chrome и перейдите на chrome://version. Скопируйте путь к профилю, он будет выглядеть примерно так: ...\AppData\Local\Google\Chrome\User Data\Profile {n}.
  • Откройте этот путь в проводнике и перейдите в папку Extensions, затем откройте папку с MetaMask(nkbihfbeogaeaoehlefnkodbefgpgknn).
  • Скопируйте папку версии расширения12.3.1_0 и вставьте её в папку с проектом.

В результате, структура папки проекта должна выглядеть следующим образом:

  • Заполните файл wallets.xlsx. Для тестирования можете добавить от 2 до 4 кошельков. Формат прокси: {IP}:{Port}:{username}:{password}.

Запуск кода

1) Откройте терминал в папке с кодом.

2) Выполните команду:

node index.js

3) Кайфуем

Возможные трудности

  • Если изменилась версия Metamask и уже не 12.3.1_0, то надо поставить новую версию в файле index.js:
  • Возникают ошибки из-за слабого компьютера или медленного интернета.
    В таком случае найдите строки с ожиданием в коде и увеличьте тайминг. Например, ожидание в 5,5 секунд выглядит так:
await new Promise(resolve => setTimeout(resolve, 5500));
  • Не работает Node или Git. Проблема может заключаться в том, что не добавлены переменные в Path или вы не перезагрузили терминал (cmd/VSC) для применения последних изменений в Path. Исправить это можно в меню "Edit environment variables" / "Изменение переменных среды".

Видео с работой кода и описанием того, как удалось обойти гитпаспорт, находится в моем тг канале: https://t.me/PastFinCoding