[Сухая информация] Инструмент записи и воспроизведения трафика: JVM-песочница-репитер!
[Сухая информация] Инструмент записи и воспроизведения трафика: JVM-песочница-репитер!

Всем привет, я безумный мастер!

Во время разработки и тестирования программного обеспечения мы часто сталкиваемся с необходимостью записывать и воспроизводить сетевые запросы для отладки, тестирования и анализа. Для имитации реальных запросов пользователей мы обычно используем различные инструменты записи и воспроизведения трафика для записи и воспроизведения сетевых запросов.

в,jvm-sandbox-repeater Это мощный инструмент записи и воспроизведения трафика, который может помочь нам легко записывать и воспроизводить сетевые запросы.

1. Введение

jvm-sandbox-repeater основан на JVM-Sandbox инструмент записи и воспроизведения потока, реализованный на Java, или его можно понимать так, как он основан плагин виртуальной машины Java,Может быть запущен непосредственно в JVM.,Целевое приложение не требует никаких изменений.

Он может автоматически перехватывать и регистрировать во время выполнения Java Сетевые запросы приложенийиответ。этодаиспользоватьJVM Sandboxиз Технология улучшения байт-кода,верноJava-приложение для ненавязчивого потока Запись и воспроизведение。это означаетпроходитьиспользоватьjvm-sandbox-repeater,Мы можем сделать это без изменения исходного кода.,Вы можете легко реализовать функцию Запись и прерывание потока.

2. Функциональные характеристики

Основные особенности jvm-sandbox-repeater включают в себя:

  • Никакой навязчивой записи:jvm-sandbox-repeater проходить JVM-SandboxТехнология улучшения байт-кода,Запись во время работы верного Java-приложения,Автоматически перехватывать и записывать сетевые запросы во время выполнения.,Никаких изменений в исходном коде не требуется.
  • Поддержка нескольких протоколов:jvm-sandbox-repeater Поддерживает несколько сетевых протоколов, включая HTTP/HTTPS, gRPC, Dubbo и TCP. Перехват и запись нескольких протоколов.
  • Гибкая конфигурация:jvm-sandbox-repeater Предоставляет множество вариантов конфигурации для правильной Записи по мере необходимости. и Оставшееся поведение можно настроить.
  • высокая производительность:jvm-sandbox-repeater на основе JVM-Sandbox технологии, с меньшими потерями производительности и меньшим влиянием на приложения.
  • Высокоточная запись:Долженинструмент Умение точно фиксировать запросыиответиз Подробности,Включая заголовок запроса, тело запроса, код состояния ответа, тело ответа и т. д.,Обеспечьте точность воспроизведения.
  • Гибкие стратегии воспроизведения:Поддерживает несколько стратегий воспроизведения,Например, хронологическое воспроизведение, одновременное воспроизведение и т. д.,Удовлетворение различных потребностей в тестировании.
  • Визуальный интерфейс:Обеспечьте легкийиспользоватьиз Визуальный Интерфейс позволяет пользователям удобно выполнять операции записи, управления и воспроизведения потока, а также снижает порог использования.
  • Высокая масштабируемость:на основеJVM Платформа-песочница, которую легко интегрировать и расширять с помощью других инструментов.

3. Сценарии применения

существоватьна работеиспользоватьjvm-sandbox-repeaterинструмент,В основномдазаниматьвиз Три типа базовых способностей:

  • поток Запись:jvm-sandbox-repeater Может быть реализованчасзахватить цель Сетевые запросы приложений,И Воля это записывает. функция записи записи,Получите фактические данные сетевого запроса целевого приложения.,Используется для последующего анализа и отладки.
  • поток Воспроизведение:jvm-sandbox-repeater поддерживатьверно Записыватьиз Сетевой запрос сделан Воспроизведение。проходить Воспроизведение Функция,Имитировать сетевые запросы целевого приложения,Проверить его корректность и стабильность.
  • Запросить изменение:jvm-sandbox-repeater Разрешить разработчикамверно Записыватьиз Сетевой запрос сделан修改。проходить Изменить функцию,Настройте параметры сетевого запроса и информацию заголовка.,Для моделирования различных сценариев и тестовых случаев.

С помощью трех вышеперечисленных основных возможностей при разработке тестов их часто используют в следующих сценариях:

  • Тестирование интерфейса:проходить Записывать生产环境изреальный интерфейспоток,Воспроизведение в тестовой среде,Может моделировать различные сложные сценарии,Проверьте стабильность и производительность интерфейса.
  • Тестирование производительности:использовать Записыватьизпоток Обработка данных Тестирование производительности,Может более точно отражать производительность системы,Помогите обнаружить и устранить узкие места в производительности.
  • Тестирование совместимости:проходитьсуществоватьразные версииизJavaприложения или различные среды Воспроизведение Записыватьизпоток,Совместимость системы можно проверить.

4. Принцип 1: Как работает технология JVM-Sandbox?

jvm-sandbox-repeater основан на JVM-Sandbox Реализован инструмент воспроизведения трафика, но, по оценкам, многие читатели не понимают, что такое JVM-Sandbox и как он работает, поэтому я остановлюсь на нем подробнее.

Проще говоря, JVM-Sandbox — это песочница для приложений Java, предназначенная для обеспечения изолированной и безопасной среды выполнения приложений Java. Основная цель технологии песочницы — защитить безопасность и стабильность системы, обеспечивая при этом лучшую среду разработки и тестирования приложений. Изолируя среду, в которой работает программа, технология песочницы может предотвратить доступ программ к ресурсам и данным, к которым они не должны иметь доступ, тем самым снижая риски безопасности.

Принцип работы JVM-Sandbox можно свести к следующим ключевым шагам:

1. Загрузка классов:существоватьJVMНеполная средняя школа Сабако,Все классы загружаются загрузчиком классов виртуальной машины Java. Загрузчики классов отвечают за загрузку классов Java из файловой системы, сети или других источников.,А Воля конвертирует его в исполняемый код.

2. Проверка байт-кода:Загрузка,JVM проверит байт-код,чтобы убедиться, что он соответствует спецификации языка Java. Целью этого шага является обнаружение потенциальных уязвимостей безопасности.,Например, ошибки преобразования типов, доступ к массиву за пределами границ и т. д.

3. Проверка безопасности:После проверки байт-кода,JVM выполнит дальнейшие проверки безопасности.,Ограничить поведение приложения,Не допускайте причинения вреда вашей системе. Сюда входят ограничения на права доступа приложений и использование ресурсов.,Например, доступ к файловой системе, доступ к сети、Системные вызовы и т.д.

4. Выполнение в песочнице:один разпроходитьпроверка байт-кодаипроверка безопасности,JVM помещает приложение в контролируемую изолированную среду для выполнения. Эта изолированная среда ограничивает доступ приложения к системным ресурсам.,Убедитесь, что его можно выполнить только в ограниченном объеме.

также,JVM-Sandboxвозвращатьсяиспользовать Технология виртуализации создает изолированные среды,И проводить улучшения байт-кода Воля добавляются в среду изоляции с помощью фиктивных (mock) методов при вызове этих методов.,JVM-Sandbox использует механизм отражения для их поиска.,И используйте прокси, например Воля, чтобы перенаправить его на виртуальную машину в песочнице для выполнения. После выполнения,Результаты будут возвращены в основную программу.

5. Принцип 2. Что такое технология улучшения байт-кода?

Технология улучшения байт-кодада Что-то вродеверноJavaбайт-код进行修改以增强其Функцияизтехнология。этоосновнойдасуществоватьJavaПосле генерации байт-кода,проходитьчитатьи Изменить байт-код, реализует улучшения для верных классов, методов, полей и других элементов. Эта технология эквивалентна изменению двоичного файла приложения. Основная цель — уменьшить избыточный код и повысить производительность приложения. производительностьждать。

Основные этапы улучшения байт-кода включают в себя:

  • Изменить байт-код:существовать Получить оригинал в памятьизбайт-код,Затем используйте какой-нибудь инструмент (например, ASM, Javassist) для изменения массива byte[],Получите новый массив байтов.
  • Сделайте измененный байт-код эффективным:это можетпроходить Два видаметодвыполнить:одинда НастроитьClassLoaderчтобы загрузить измененныйизбайт-код;двадасуществоватьJVMЗагрузить пользователейизClassчас,Перехватить и вернуть измененный байт-код,или во время выполнения,использоватьInstrumentation.redefineClassesметодзаменить оригинализбайт-код。

Технология улучшения байт-кода имеет широкий спектр приложений. Например, ее можно использовать в инструментах APM (управления производительностью приложений) для мониторинга и управления производительностью и доступностью прикладного программного обеспечения, чтобы гарантировать нормальную работу программных приложений. Ее также можно использовать в Java; инструменты определения проблем, такие как BTrace

6. Установка и использование

1. Загрузите или добавьте зависимости

Сначала вам необходимо загрузить последнюю версию jar-файла плагина с официального сайта jvm-sandbox-repeater или репозитория GitHub.

Или добавьте зависимость jvm-sandbox-repeater непосредственно в файл pom.xml проекта:

Язык кода:javascript
копировать
<dependency>
    <groupId>com.github.jvm-sandbox-repeater</groupId>
    <artifactId>jvm-sandbox-repeater</artifactId>
    <version>последняя версия</version>
</dependency>

2. Настройте песочницу

Чтобы добавить подключаемый модуль jvm-sandbox-repeater в JVM, добавьте загруженный jar-файл подключаемого модуля jvm-sandbox-repeater в путь к классам целевого приложения или добавьте его в JVM с помощью параметра Javaagent.

Добавьте следующую конфигурацию в параметры запуска проекта, чтобы включить JVM-Sandbox и jvm-sandbox-repeater:

Язык кода:javascript
копировать
java -javaagent:path/to/jvm-sandbox-repeater.jar=config.yaml -jar your-application.jar

Среди них config.yaml — это файл конфигурации jvm-sandbox-repeater. Соответствующие параметры jvm-sandbox-repeater, такие как путь сохранения файла записи, скорость воспроизведения и т. д., могут быть изменены в соответствии с реальной ситуацией.

3. Напишите файлы конфигурации

Создайте файл с именем config.yaml для настройки jvm-sandbox-repeater. Вот простой пример:

Язык кода:javascript
копировать
repeater:
  enabled: true
  recordDir: /path/to/record/dir
  replayDir: /path/to/replay/dir
  filter:
    classes:
      - com.example.service.*
    methods:
      - com.example.service.UserService.getUserInfo

В этом примере мы включаем jvm-sandbox-repeater и указываем каталог для записи и воспроизведения. В то же время мы также определили фильтр для записи и воспроизведения только метода getUserInfo класса UserService в пакете com.example.service.

4. Запись и воспроизведение

Когда целевое приложение запущено, jvm-sandbox-repeater захватывает сетевые запросы в режиме реального времени и записывает их в указанную папку записи. Когда вам нужно воспроизвести запрос, вы можете использовать инструмент командной строки или API, предоставляемый jvm-sandbox-repeater.

Язык кода:javascript
копировать
# Запрос на запись
java -jar jvm-sandbox-repeater.jar record -c config.yaml

# Запрос на воспроизведение
java -jar jvm-sandbox-repeater.jar replay -c config.yaml

Альтернативно вы также можете использовать API, предоставляемый jvm-sandbox-repeater, для записи и воспроизведения в коде. Вот простой пример:

Язык кода:javascript
копировать
import com.github.jvm.sandbox.repeater.Repeater;
import com.github.jvm.sandbox.repeater.Recorder;
import com.github.jvm.sandbox.repeater.Replayer;

public class MyApp {
    public static void main(String[] args) {
        // инициализация Repeater
        Repeater repeater = new Repeater();
        repeater.init();

        // Начать Запрос на запись
        Recorder recorder = repeater.startRecording();
        recorder.record("http://example.com/api/user", "GET");

        // останавливаться Запрос на запись
        recorder.stopRecording();

        // Начать Запрос на воспроизведение
        Replayer replayer = repeater.startReplaying();
        replayer.replay("http://example.com/api/user", "GET");

        // останавливаться Запрос на воспроизведение
        replayer.stopReplaying();
    }
}

Выполнив описанные выше шаги, вы можете использовать jvm-sandbox-repeater для записи и воспроизведения трафика приложений Java.

5. Просмотр и анализ результатов

В процессе воспроизведения или после его завершения вы можете просмотреть состояние воспроизведения, результаты, данные о производительности и т. д. через визуальный интерфейс, предоставляемый jvm-sandbox-repeater, и провести анализ результатов.

7. Резюме

в общем,jvm-sandbox-repeater Это мощный и простой в использовании инструмент записи и воспроизведения трафика, который может помочь разработчикам и тестировщикам легко записывать и воспроизводить сетевые запросы. проходить jvm-sandbox-repeater,Мы можем более эффективно отлаживать, тестировать и анализировать,Повышайте эффективность и качество разработки и тестирования программного обеспечения. Если вы ищете отличный инструмент для потоковой записи и воспроизведения,Можно и попробовать jvm-sandbox-repeater,Я верю, что это принесет вам неожиданные сюрпризы!

jvm-sandbox-repeaterиз Исходный код проекта:

Язык кода:javascript
копировать
git clone https://github.com/alibaba/jvm-sandbox-repeater.git

Если статья вам полезна, подписывайтесь, ставьте лайки, смотрите и делитесь ею с друзьями!

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose