Мне для тестирования бывает нужно ограничить скорость HTTP-трафика для проверки того, как ресурс работает в тех или иных условиях.
Для этих целей я написал на Node.js прокси-сервер, который выполняет одну простую задачу: пропускает через себя HTTP-трафик, лимитируя скорость до указанного значения.
Устанавливается он в систему с помощью npm:
npm install -g throttle-proxy
И запускается командой:
throttle-proxy
По-умолчанию, сервер будет слушать подключения на порту 3128 и ограничивать скорость до 100 тысяч байт в секунду. Эти значения можно поменять с помощью соответствующих параметров при запуске сервера.
throttle-proxy --speed 50000 --port 9999
Остановить прокси-сервер можно комбинацией клавиш Ctrl+C
в консоли, где он запущен.
Не забудьте только указать адрес 127.0.0.1
и порт 3128
(или выбранный вами порт) в настройках системы в качестве HTTP-прокси сервера.
Исходный код доступен на GitHub — throttle-proxy
Update: С подачи пользователей добавил фильтр ресурсов, для которых нужно применять ограничение скорости, и фильтр, который пропускает ресурсы без ограничений.
Коментарии к заметке
Расскажи, а почему не http://nginx.org/ru/docs/http/ngx_http_core_module.html#limit_rate например?
Я хотел упомянуть этот модуль. И его тоже использую, когда тестирую что-то непосредственно на своём сервере. Но, ты же понимаешь, что такой локальный прокси подходит для тестирования любый ресурсов. С ним немного сложнее только в плане того, что нужно ещё менять системные настройки.
trickle -s -d 100 -w 100 firefox, не? :)
Робокоп, вариант. А под Windows?
В твиттере ещё подсказывают решение для OSX:
Загружается через меню Xcode › Open Developer Tool › More Developer Tools . Затем устанавливается в панель настроек системы.