Узнайте, как с помощью honeypot-ловушки вычислить скрытый парсинг данных конкурентами. Реальный пример с Python-кодом и анализом логов.
Представьте: ваш технический пост на форуме — точная копия внутренней архитектуры стартапа, который вы аудируете. А через день вам звонит отдел продаж, называя параметры, которые вы нигде не публиковали. Знакомо? Эта статья покажет, как с помощью простой ловушки (honeypot) вычислить, кто и как ворует ваши данные. Вы узнаете, как настроить трекинг ссылок, анализировать User-Agent и IP-адреса, чтобы раскрыть автоматизированную систему сбора информации.
Honeypot (горшок с мёдом) — это приманка, которая выглядит как ценные данные, но на самом деле создана для отслеживания злоумышленников. В контексте парсинга веб-страниц honeypot — это специально размещённая ссылка или элемент, который не виден обычным пользователям, но загружается ботами. Когда бот её запрашивает, вы получаете его IP, User-Agent и другие метаданные.
В нашем сценарии P (аудитор) использовал этот метод, чтобы выяснить, кто копирует его технические конфигурации с DEV.to. Он разместил в посте ссылку на свой сервер, которая вела на PDF научной статьи. Но перед редиректом сервер логировал все данные запроса. Так P узнал, что Pulse AI сканирует форумы в поисках потенциальных клиентов.
Вот минимальный сервер на Flask, который записывает информацию о каждом запросе и перенаправляет на легитимный ресурс.
from flask import Flask, request, redirect, jsonify
import logging
from datetime import datetime
app = Flask(__name__)
# Настройка логирования
logging.basicConfig(
filename='honeypot.log',
level=logging.INFO,
format='%(asctime)s - %(message)s'
)
@app.route('/track')
def track():
# Собираем данные о запросе
log_entry = {
'timestamp': datetime.utcnow().isoformat(),
'ip': request.remote_addr,
'user_agent': request.headers.get('User-Agent'),
'referer': request.headers.get('Referer'),
'headers': dict(request.headers)
}
# Записываем в лог
logging.info(f"IP: {log_entry['ip']}, UA: {log_entry['user_agent']}, Referer: {log_entry['referer']}")
# Перенаправляем на легитимный PDF (например, научную статью)
return redirect('https://arxiv.org/pdf/2301.12345.pdf')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Этот код:
/trackЗапустите сервер на VPS и используйте ссылку http://ваш-сервер:5000/track в своих постах.
После того как ловушка сработала, вы получите файл honeypot.log. Вот пример реальной записи из истории P:
2024-07-13 08:22:08 - IP: 192.168.1.10, UA: Mozilla/5.0 (compatible; PulseCrawler/1.0; +http://pulse.ai/bot), Referer: https://dev.to/p/post-4829
Обратите внимание на User-Agent: PulseCrawler/1.0. Это явно бот. Также Referer указывает на пост, где вы разместили ссылку. Если бы это был реальный пользователь, он бы перешёл по ссылке вручную, и User-Agent был бы обычным браузером (Chrome, Firefox).
Для автоматического анализа можно написать скрипт на Python:
import re
from collections import Counter
# Читаем лог
with open('honeypot.log', 'r') as f:
lines = f.readlines()
# Извлекаем IP и User-Agent
ips = []
user_agents = []
for line in lines:
match = re.search(r'IP: (\S+), UA: (.+), Referer:', line)
if match:
ips.append(match.group(1))
user_agents.append(match.group(2))
# Статистика
print("Уникальные IP:", len(set(ips)))
print("Топ-5 IP:", Counter(ips).most_common(5))
print("Топ-5 User-Agent:", Counter(user_agents).most_common(5))
Если вы видите много запросов с разных IP, но одинаковым User-Agent (например, PulseCrawler), это верный признак автоматизированного парсинга.
Чтобы усложнить жизнь ботам, можно проверять наличие определённых кук или заголовков. Например, добавить в ответ Set-Cookie, а потом проверять её при следующем запросе. Боты часто не обрабатывают куки.
from flask import make_response
@app.route('/track')
def track():
# ... логирование ...
resp = make_response(redirect('https://arxiv.org/pdf/2301.12345.pdf'))
resp.set_cookie('honeypot', 'true', max_age=3600)
return resp
Также можно добавить проверку на JavaScript: обычный пользователь выполнит JS, бот — нет. Но это уже сложнее и может нарушить работу ссылки.
Если вы публикуете технические посты с конфиденциальными деталями (архитектура, параметры моделей), обязательно используйте honeypot-ссылки. Это не займёт много времени:
http://ваш-сервер:5000/track в каждый постЕсли заметите подозрительную активность — сохраните логи, сделайте скриншоты и, возможно, свяжитесь с юристом. Помните: знание — сила, а honeypot — ваш детектор лжи.
Хочешь закрепить знания на практике?
Решай задачи на Algolit — интерактивная платформа для обучения
Начать бесплатно →