Имитировать отложенный ответ для определенного адреса

Я хотел бы проверить, как загрузка внешних javascripts влияет на страницу, когда удаленные серверы медленно реагируют.

Я искал инструменты, которые могут замедлять соединение для определенных сайтов, но смог найти только инструменты, которые замедляют работу всей сети или не существуют для Mac (например, здесь или здесь)

Есть такие инструменты?


person mbdev    schedule 02.05.2012    source источник
comment
Короче говоря, iptables, но вы могли бы вместо этого настроить прокси - и создать в нем пулы задержки   -  person mschr    schedule 02.05.2012


Ответы (2)


Используя приложение Detours для Mac, вы можете перенаправлять определенные хосты на свой локальный веб-сервер. Затем с вашего сервера вы можете получить ресурс (через curl и т. д.), поспать определенное время, а затем вернуть ответ.

person Eli    schedule 02.05.2012
comment
Это интересная концепция. я попытаюсь - person mbdev; 03.05.2012

Это не простой выход, но вы могли бы использовать IPTABLES (unix ip-маршрутизатор) в сочетании с TC (управление трафиком)? Это довольно обширно, если вы не знаете, как работает терминальный bash-скрипт, но вам понадобится терминал на 100% для правильного решения.

Если это не работает для вас, попробуйте более простой метод: http://lartc.org/howto/lartc.ratelimit.single.html

Сохраните это, например, в своей домашней папке, назовите ее bwm.sh

#!/bin/bash

# through this interface
IF=$1
# on this HOST
HOST=$2
# get the IP from HOST
HOSTIP="`nslookup $HOST|grep Address|grep -v "#"|cut -d " " -f2`"
# with this rate
your_rate=$3


# defaults /sbin/tc
TC="`whereis tc | sed 's/[^\ ]*.\([^\ ]*\).*/\1/'`" 
# defaults /sbin/iptables
IPTABLES="`whereis iptables | sed 's/[^\ ]*.\([^\ ]*\).*/\1/'`" 

#some number
PRIO="123"
# you create a new rule in the mangle table
IPT="$IPTABLES -t mangle"

echo "Program locations found: iptables: $IPTABLES and tc: $TC"
echo "down-rating bandwidth\n on $HOST\n to $your_rate whilst marking packages that origins\n from $HOSTIP\n with $PRIO on interface\n named $IF"
echo -n "starting setup.."

# apply custom filter
$IPT -N myfilter

# add it to the POSTROUTING chain
$IPT -A POSTROUTING -j myfilter

# if conntrack is used - restore a mark and allow the packets, which already have been marked, through - no need to check again

$IPT -A myfilter -p tcp -j CONNMARK --restore-mark
$IPT -A myfilter -m mark --mark $PRIO -j ACCEPT

# add to it your matching rule

$IPT -A myfilter -p tcp -s $HOSTIP -j MARK --set-mark $PRIO

# conntrack it optionally, so not every packet has to be rematched
$IPT -A myfilter -j CONNMARK --save-mark

# use that mark in a tc filter rule
echo qdisc add
$TC qdisc add dev $IF root handle 1: htb default 30
echo class add
$TC class add dev $IF parent 1: classid 1:1 htb rate $your_rate # <<<<<<<< fill in rate

echo sfq add
# add an SFQ qdisc to the end - to which you then attach the actual filter
$TC qdisc add dev $IF parent 1:1 sfq perturb 10
echo filter add
$TC filter add dev $IF parent 1:1 prio 1 handle $PRIO fw flowid 1:1
echo "done"

Теперь откройте окно терминала и получите root-права.

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

cd; su

введите пароль root

запустить программу с параметрами Interface, Hostname, Rate

sh bwm.sh IF HOST RATE
person mschr    schedule 02.05.2012
comment
Спасибо за ответ! Мне неловко говорить, что netem недоступен для Mac после всех усилий. - person mbdev; 03.05.2012
comment
не уверен, что вы подразумеваете под нетем? но я предполагаю, что вы имеете в виду, что инструменты не могут быть найдены? - person mschr; 03.05.2012
comment
netem — это программное обеспечение с командной строкой «tc», которую вы используете в своем ответе. Вы можете найти его здесь: linuxfoundation.org/collaborate/workgroups/networking/netem , и это недоступно на Mac - person mbdev; 03.05.2012
comment
ааа, не знал об эмуляторе сети :=) однако, для будущих поисков здесь, правильный пакет - в любом случае в репозиториях Linux - это iproute(2), нашел отличную вики по теме здесь: wiki.robotz.com/index.php/Iproute2 - person mschr; 03.05.2012
comment
запуск программы, подобной предложенной (на самом деле это прокси-сервер), вероятно, достаточно осуществим, в любом случае, в средах разработки. Но было бы излишним использовать прокси-сервер на вашем локальном хосте, скажем, на ноутбуке. - person mschr; 03.05.2012