Python技术迷

3种Python恶搞脚本,医院的WiFi实在太快了

我那天躺在医院病床上输液,左手吊着瓶子,右手抱着电脑,抬头一看——免费 WiFi,满格,测速一跑,嗯,真的比我家里还快一点点… 那一瞬间的心情你懂吧:住院的不爽,被 WiFi 稍微安慰了一下。

但问题来了:网太快,人容易闲得慌。作为一个写代码的,手一痒,就开始想:要不…写几段小脚本自娱自乐一下?也顺便“恶搞”下这个过于良心的医院 WiFi。

下面这 3 个小脚本,全是本地玩的,不撸别人机器、不搞医院网络,纯属自嗨。你要真拿去玩,记得只在自己设备上整活,别祸害别人哈。

一、假装在下载一个宇宙级大文件:网速装X进度条

场景是这样的:你坐在输液椅上,一边打点滴,一边开着电脑。护士一来:“你这个小伙子看着挺忙啊,都住院了还在干活?” 你轻轻一侧身,露出一个正在“以 98MB/s 疯狂下载”的终端窗口——专业感一下就来了。

其实这个脚本啥也没下载,就是个假的进度条 + 网速显示。

脚本效果

  • 终端里显示一个彩条(其实是字符),从 0% 慢慢走到 100%
  • 旁边伪造“当前速度”“已下载大小”“剩余时间”
  • 全程只是在 time.sleep(),对网络零压力

代码示例:fake_download.py

import time
import random
import sys


defformat_size(mb: float) -> str:
"""把 MB 换算成人类能看懂的字符串,比如 1.23 GB"""
if mb < 1024:
returnf"{mb:.2f} MB"
    gb = mb / 1024
returnf"{gb:.2f} GB"


deffake_download(total_mb: int = 20480):
"""
    假装在下载一个 20G 的文件,其实就是在终端画进度条。
    total_mb:虚构的文件大小(单位:MB)
    """

    downloaded = 0.0
    bar_len = 40# 进度条宽度

    start_time = time.time()

while downloaded < total_mb:
# 每一轮“下载”一点随机大小的数据
        chunk = random.uniform(10, 200)  # 一次下 10~200MB,纯瞎编
        downloaded = min(downloaded + chunk, total_mb)

# 计算进度、网速、剩余时间
        percent = downloaded / total_mb
        elapsed = time.time() - start_time
        speed = downloaded / elapsed if elapsed > 0else0# MB/s

        remain_mb = total_mb - downloaded
        remain_sec = remain_mb / speed if speed > 0else0

# 画进度条
        filled_len = int(bar_len * percent)
        bar = "█" * filled_len + "-" * (bar_len - filled_len)

        line = (
f"\r[{bar}] "
f"{percent * 100:6.2f}%  "
f"Speed: {speed:6.2f} MB/s  "
f"{format_size(downloaded)}/{format_size(total_mb)}  "
f"ETA: {remain_sec:5.1f}s"
        )

# 输出并刷新
        sys.stdout.write(line)
        sys.stdout.flush()

# 偶尔快一点,偶尔慢一点,模拟网速波动
        time.sleep(random.uniform(0.05, 0.25))

    print("\n下载完成(假的)🎉")


if __name__ == "__main__":
# 住院太无聊,可以改改 total_mb,自定义一个更离谱的大小
    fake_download(total_mb=51200)  # 比如 50GB

你把这个脚本跑起来,再顺手开个 Excel 放在旁边,别人路过就只会觉得: “卧槽这人住院都在下生产数据库备份,太拼了。”

二、假装在排查线上事故:自嗨版“日志风暴”终端

医院输液区最怕什么?家属突然走过来对你说:“你怎么还有心情刷剧?” 这时候就轮到第二个脚本登场——在终端刷一屏一屏的“系统日志”。

这个脚本干啥

  • 循环打印带时间戳的“日志”
  • 随机组合服务名 / traceId / 日志级别 / 文案
  • 看起来像在排查一个大型分布式系统的故障 实际上你可能在旁边用手机刷短视频…

代码示例:fake_logs.py

import random
import time
from datetime import datetime

LEVELS = ["INFO", "DEBUG", "WARN", "ERROR"]
SERVICES = [
"order-service",
"payment-service",
"user-service",
"gateway",
"inventory-service",
"notify-service",
]
MESSAGES = [
"request handled successfully",
"db query slow, cost={} ms",
"calling downstream api /{} failed, retrying...",
"cache miss, reloading from db",
"user {} not found, use anonymous profile",
"feign client timeout, traceId={}",
"start async task jobId={}",
"MQ message sent, topic=order.event offset={}",
"lock acquired, key=order:{}",
"unexpected status code: {} from {}",
]

PATHS = [
"createOrder",
"pay",
"login",
"getUserInfo",
"listProducts",
"refund",
]

STATUS_CODES = [200, 201, 400, 401, 403, 500, 502, 504]


defrandom_trace_id() -> str:
return"".join(random.choice("0123456789abcdef") for _ in range(16))


defrandom_ms() -> int:
return random.randint(10, 1500)


defrandom_user_id() -> int:
return random.randint(10000, 99999)


defrandom_job_id() -> str:
returnf"JOB-{random.randint(100000, 999999)}"


defrandom_offset() -> int:
return random.randint(1000000, 9999999)


deflog_once():
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
    level = random.choices(LEVELS, weights=[60, 15, 20, 5])[0]
    service = random.choice(SERVICES)
    msg_tpl = random.choice(MESSAGES)

# 简单模板替换
if"{} ms"in msg_tpl:
        msg = msg_tpl.format(random_ms())
elif"/{}"in msg_tpl:
        msg = msg_tpl.format(random.choice(PATHS))
elif"user {}"in msg_tpl:
        msg = msg_tpl.format(random_user_id())
elif"traceId={}"in msg_tpl:
        msg = msg_tpl.format(random_trace_id())
elif"jobId={}"in msg_tpl:
        msg = msg_tpl.format(random_job_id())
elif"offset={}"in msg_tpl:
        msg = msg_tpl.format(random_offset())
elif"order:{}"in msg_tpl:
        msg = msg_tpl.format(random.randint(1000000, 9999999))
elif"code: {}"in msg_tpl:
        msg = msg_tpl.format(random.choice(STATUS_CODES), random.choice(SERVICES))
else:
        msg = msg_tpl

    print(f"{now}{level:<5} [{service}] {msg}")


defrun_fake_logs(lines: int = 300):
"""
    模拟打印一堆系统日志。
    lines: 日志条数
    """

for _ in range(lines):
        log_once()
# 日志间隔有快有慢,就像真在处理请求一样
        time.sleep(random.uniform(0.03, 0.18))


if __name__ == "__main__":
    run_fake_logs(lines=500)

你可以把终端字体调小一点,让日志刷得满屏飞。 家属或者同事路过一看:

“哎呀你还在救火啊,那你忙你的忙你的。”

至于你到底在不在救火,只有你心里最清楚 😂

三、网速“体检报告”生成器:给医院 WiFi 做个假体检

本来是你在蹭医院 WiFi,人家什么都没说。 但你还是可以搞个“测速体检报告”,装出一副“我在严肃评估网络质量”的样子。

这个脚本会打印什么

  • 随机生成:上行 / 下行网速、延迟、抖动、丢包
  • 给出几句“诊断建议”
  • 格式像一张小报告,适合截图发给朋友装逼

代码示例:net_report.py

import random
from datetime import datetime


defrandom_speed(min_mbps: float, max_mbps: float) -> float:
return round(random.uniform(min_mbps, max_mbps), 2)


defrandom_latency() -> float:
return round(random.uniform(5, 60), 1)  # ms


defrandom_jitter() -> float:
return round(random.uniform(0.5, 20), 1)


defrandom_loss() -> float:
# 丢包率一般很低,控制在一个“看着合理”的范围
    val = random.choice([0.0, 0.0, 0.0, random.uniform(0.1, 2.0)])
return round(val, 2)


defscore_by_speed(down: float, up: float, latency: float, loss: float) -> int:
    score = 100
if down < 20:
        score -= 15
if up < 10:
        score -= 10
if latency > 40:
        score -= 15
if loss > 0.5:
        score -= 20
return max(0, min(100, score))


defadvice_by_score(score: int) -> str:
if score > 90:
return"网络状态优秀,看剧、开视频会完全没压力。"
elif score > 75:
return"网络良好,偶尔会有轻微波动,不影响日常使用。"
elif score > 60:
return"网络一般,大文件下载和高清视频可能会卡,建议错峰使用。"
else:
return"网络偏差,如非必要别作死下大型游戏更新。"


defgenerate_report():
    now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# 你可以根据实际测速结果手动调整范围,这里纯随机
    down = random_speed(30, 300)  # 下行
    up = random_speed(10, 80)     # 上行
    latency = random_latency()
    jitter = random_jitter()
    loss = random_loss()

    score = score_by_speed(down, up, latency, loss)
    advice = advice_by_score(score)

    print("=" * 50)
    print("            WiFi 网速体检报告(伪)")
    print("=" * 50)
    print(f"检测时间      : {now}")
    print(f"连接环境      : 某三甲医院病房 WiFi")
    print("-" * 50)
    print(f"下行带宽      : {down:6.2f} Mbps")
    print(f"上行带宽      : {up:6.2f} Mbps")
    print(f"平均延迟      : {latency:6.1f} ms")
    print(f"抖动 (Jitter): {jitter:6.1f} ms")
    print(f"丢包率        : {loss:6.2f} %")
    print("-" * 50)
    print(f"综合评分      : {score}/100")
    print("诊断结果      : ", advice)
    print("=" * 50)
    print("备注:本报告纯属娱乐用途,与真实网速无关。")
    print("=" * 50)


if __name__ == "__main__":
    generate_report()

你把这个报告截个图,发给朋友说:

“我替你们测过了,这家医院 WiFi 可以的,能住。”

对方一脸问号,你一脸认真。人生小确幸就是这么来的。

这类“恶搞脚本”,我的底线就两个:

  1. 只在自己设备上跑,不要往别人电脑上塞,更不要连到医院内部系统瞎搞,那就不是好玩,是作死了。
  2. 不做任何真正消耗网络、影响别人体验的东西,上面这三个都是本地自嗨,没有扫描、没有攻击、没有大流量。

你要是正好也被医院 WiFi“照顾”着,又无聊到抓狂,可以随便挑一个脚本改改变量、改改文案,往里加点你们组内的梗,比如把 order-service 改成你们真实的微服务名,效果更好。

行,我这边输液时间也差不多了,护士又来催我拔针… 有啥想一起整活的脚本,回头你再发我一眼,我帮你一起脑洞。

-END-

我为大家打造了一份RPA教程,完全免费:songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB