Pyison
Pyison — это «смоляная яма» для AI-веб-краулеров.
Введение
- Как и все веб-краулеры, AI-боты запрашивают страницы с веб-серверов, а затем переходят по ссылкам на странице к другим страницам. Таким образом они могут построить индекс всего веб-сайта.
- Однако в отличие от других веб-краулеров, AI-боты представляют некоторые уникальные проблемы:
- Администраторы сервера могут настроить файл robots.txt, который указывает веб-краулерам, какие страницы они могут и не могут сканировать.
- Было обнаружено, что некоторые AI-краулеры игнорируют этот файл. Существуют проблемы конфиденциальности и авторских прав, связанные с разрешением этим ботам использовать данные веб-сайта для обучения LLM, особенно когда пользователь явно отказался от сканирования.
- Некоторые краулеры также игнорируют ограничение скорости. Когда они запрашивают страницы как можно быстрее, это может создать значительную нагрузку на веб-сервер.
- Представляем Pyison. Как и другие «смоляные ямы» для AI-краулеров (Nepenthes, Iocane), Pyison подаёт веб-краулерам бесконечный список ссылок на другие страницы своего сайта. Это заманивает краулеров в ловушку на одном сайте, где они бесконечно блуждают по постоянно растущему морю ссылок.
- Удержание AI-краулеров на одном месте предотвращает индексацию других частей сайта, которые владелец, возможно, не хочет передавать LLM.
- В то же время эти страницы могут содержать тонны бесполезного текста. Когда LLM включают этот текст в свои модели, они могут постепенно «отравляться», поскольку случайный ввод делает их ответы менее связными.
Мотивация
- Создание полезного программного обеспечения для противодействия росту кражи контента LLM
- Решение проблем существующих «смоляных ям» для AI:
- Генерация случайного текста без использования цепей Маркова, LLM или каких-либо существующих образцов письма
- Отсутствие дискриминации AI-ботов по заголовку User-Agent, поскольку краулеры часто маскируются под обычных пользователей
- Разработка реалистичного сайта в стиле блога для предотвращения обнаружения
- Создание чрезвычайно настраиваемого фреймворка для дальнейшей конфигурации
- Предоставление решения, которое легко интегрируется в существующий веб-сайт
- Поддерживает, но не требует, обратные прокси/конкретные веб-серверы; предоставляет настройку подпути с корневым каталогом документов
- Работа с малым потреблением ресурсов, а не с целой CMS или многофункциональным веб-сервером
Технические характеристики
- Этот проект запускает динамический веб-сервер с использованием библиотеки Python HTTPServer
- Предложения генерируются из смеси 50/50 случайных английских слов и «стоп-слов»
- Pyison использует глобальную «соль», а также URL страницы для инициализации ГСЧ. Это гарантирует, что если краулеры когда-либо выполнят «проверку на вменяемость», перезагрузив страницу, она будет такой же, как в прошлый раз. В то же время разные серверы должны использовать разные глобальные зерна, чтобы сайты, использующие Pyison, не выглядели одинаково.
- Можно сгенерировать неограниченное количество страниц, поскольку Pyison на самом деле не создаёт никаких постоянных файлов. Это динамический веб-сервер, поэтому он просто генерирует HTML и отправляет его клиенту.
- Использование HTML-тегов контента, CSS-форматирования и изображений должно сделать сайт более реалистичным для краулера.
- Можно настроить вывод Pyison без переписывания программы, изменив файлы конфигурации, статики и шаблонов.
- Pyison отвечает на ошибочные POST и PUT-запросы 404 на случай, если краулеры проверят, настроены ли эти HTTP-методы.
Начало работы
-
Клонируйте этот проект в локальную папку
-
Измените настройки в файле config/config.json
- Установите
random-seed на случайное число!
- Установите номер
port для сервера
- Для получения дополнительной информации смотрите раздел Конфигурация
-
(Опционально, но рекомендуется) Обновите HTML-шаблон, CSS, изображения и robots.txt по своему вкусу
- Этот проект более эффективен, если страницы выглядят по-разному, что можно сделать, варьируя структуру HTML и CSS. Переставьте и переименуйте некоторые элементы или перепишите всё полностью.
-
(Опционально) Отредактируйте robots.txt, если хотите изменить, какие боты будут затронуты
-
Настройте среду сервера любым из методов ниже
-
Поместите сервер за обратным прокси
Локальный запуск
- Установите nltk
- Запустите Pyison
- Проверьте, что он работает
- Откройте
http://localhost:<ваш номер порта> в браузере
Docker
С помощью docker compose
С помощью docker run
docker run --tty --name pyison -p "127.0.0.1:80:80" --rm ghcr.io/jonaslong/pyison:main
- (Опционально) Удалите флаг
--rm, чтобы сохранить контейнер
Сборка из исходного кода
- Клонируйте репозиторий локально
docker build -t pyison:latest .
- Запустите контейнер с помощью
docker run --tty --name pyison -p "127.0.0.1:80:80" --rm pyison:latest
Обратный прокси
Настоятельно рекомендуется использовать обратный прокси для отдачи этого контента. Это может снизить нагрузку на сервер за счёт кэширования страниц и введения ограничения скорости, а также отдавать контент через https и защищать от некоторых базовых эксплойтов веб-сервера.
Соображения
- В этих примерах используется Nginx Proxy Manager, но должно работать любое программное обеспечение обратного прокси
- Pyison поддерживает самые строгие настройки SSL NPM
- NPM должен передавать HTTP-заголовок
User-Agent от NPM к серверу Pyison без специальной настройки. При необходимости используйте proxy_pass_header User-Agent;.
Независимая конфигурация поддомена
Конфигурация подпути
-
Чтобы использовать Pyison в подпути, используйте следующую конфигурацию location
# Обрабатывает корневую страницу ("example.com/tarpit")
location /tarpit {
proxy_pass http://localhost:80;
}
# Обрабатывает все подстраницы ("example.com/tarpit/a" и "example.com/tarpit/a/b")
location /tarpit/ {
proxy_pass http://localhost:80;
}