Bean Network Tester

只针对一个应用,而不是整台机器

没有目标时,电脑上的每个连接都会受影响,包括你正在使用的远程桌面,以及用来下载修复程序的下载。有了目标,只有一个进程会得到糟糕的网络,其他一切照常进行。

按进程

在进程中输入一个名称,或者传入 --target。仅写名称时按片段匹配,所以 chrome 会匹配 chrome.exe:

BeanNetworkTester.exe --loss 10 --target chrome.exe

它会跟随进程树,这对会派生子进程的程序很重要:浏览器为每个标签页打开一个进程,这些进程也会受到影响。

这个字段可以接受不止一个名称,也可以同时接受不止一种内容:

你输入的内容含义
chrome.exe,firefox.exe两个应用。
chrome,!chromedriverChrome,但绝不包括驱动程序。排除优先。
my*.exe所有以“my”开头的程序。
re:^node\.exe$正则表达式,用于通配符不够用的情形。
4812单个进程 ID。
>1000所有大于 1000 的进程 ID。

按地址或端口

有时关注的单位不是应用,而是某一台服务器。这些参数接受同样的列表、范围和排除语法,并支持 CIDR 和 IPv6:

BeanNetworkTester.exe --latency 300 --dst-ip 10.0.0.0/24 --dst-port 443
BeanNetworkTester.exe --loss 20 --dst-port "!53"

第二条值得了解:除 DNS 之外的所有流量。把目标排除某个端口,往往比列出你想要的那些端口更容易。

按名称指定进程,在它重启后依然有效

在会话运行期间重启应用,按名称指定的目标会重新找到新进程。按进程 ID指定的目标则做不到,因为那个 ID 属于已经退出的进程。Windows 之后把同一个 ID 分配给的另一个程序同样不会受到影响。如果你的测试会重启被测对象,请按名称指定目标。

不应忽视的警告

在开启影响、没有可瞄准的目标且没有时间限制的情况下启动,窗口和命令行都会提示:这会影响这台机器上的每个连接。这是警告,而不是拒绝,有时这正是你想要的。如果不是,请设置目标或 --duration,而停止始终会把一切恢复原状。

接下来

准备好故意搞坏自己的网络了吗?

下载 Windows 版