Fiddler弱网测试模拟脚本

ctrl + R 打开脚本编辑,全部替换为下方脚本内容后保存

import System;
import Fiddler;

class Handlers
{
	// 菜单:规则 -> 弱网网络类型
	public static RulesString("弱网网络类型", true)
	RulesStringValue(0, "关闭", "off")
	RulesStringValue(1, "2G", "2g")
	RulesStringValue(2, "3G", "3g")
	RulesStringValue(3, "4G", "4g")
	RulesStringValue(4, "5G", "5g")
	RulesStringValue(5, "弱 Wi-Fi", "wifi")
	var weaknet_profile: String = "off";

	static function OnBeforeRequest(oSession: Session) {
		var up_kbps: int = 0;
		var down_kbps: int = 0;
		var rtt_ms: int = 0;

		switch (weaknet_profile) {
			case "2g":
				up_kbps = 15;
				down_kbps = 50;
				rtt_ms = 800;
				break;

			case "3g":
				up_kbps = 128;
				down_kbps = 384;
				rtt_ms = 300;
				break;

			case "4g":
				up_kbps = 2000;
				down_kbps = 10000;
				rtt_ms = 100;
				break;

			case "5g":
				up_kbps = 10000;
				down_kbps = 50000;
				rtt_ms = 30;
				break;

			case "wifi":
				up_kbps = 1000;
				down_kbps = 3000;
				rtt_ms = 80;
				break;

			default:
				return;
		}

		// 每传输 1 KB 的延迟,数值越大,网络越慢
		oSession["request-trickle-delay"] =
			"" + Math.round(8000 / up_kbps);

		oSession["response-trickle-delay"] =
			"" + Math.round(8000 / down_kbps);

		// 请求方向增加半个 RTT 延迟
		System.Threading.Thread.Sleep(Math.round(rtt_ms / 2));
	}

	static function OnBeforeResponse(oSession: Session) {
		var rtt_ms: int = 0;

		switch (weaknet_profile) {
			case "2g":
				rtt_ms = 800;
				break;

			case "3g":
				rtt_ms = 300;
				break;

			case "4g":
				rtt_ms = 100;
				break;

			case "5g":
				rtt_ms = 30;
				break;

			case "wifi":
				rtt_ms = 80;
				break;

			default:
				return;
		}

		// 响应方向增加另半个 RTT 延迟
		System.Threading.Thread.Sleep(Math.round(rtt_ms / 2));
	}
}

然后通过规则 – 弱网网络类型开启或选择不同网络模拟

THE END
喜欢就支持一下吧
赞赏 分享