You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下mitmdump抓安卓请求报too many file descriptors错误求助

报错根因

你遇到的ValueError: too many file descriptors in select()是Windows平台的固有限制:Windows默认的select()系统调用最多仅支持同时监听512个文件描述符,当mitmdump处理的并发请求量超过阈值时就会触发该错误,和mitmdump本身源码逻辑无关,无需修改源码即可解决。

可行解决方案
  • 方案1:替换Python异步事件循环(最优先推荐)
    在你配合mitmdump使用的自定义Python脚本的最开头添加如下代码,将默认的SelectorEventLoop替换为Windows专属的ProactorEventLoop,该事件循环没有512个文件描述符的限制:
import asyncio
asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())
  • 方案2:限制mitmdump并发连接数
    启动mitmdump时添加--max-connections参数主动限制同时处理的连接数,避免并发量超过阈值,适合请求量不大的场景,示例启动命令:
mitmdump -s your_script.py --max-connections 200
  • 方案3:调高Windows系统文件描述符上限
    Windows默认C运行时最多允许打开512个文件,可通过pywin32库调整上限到最高2048,首先安装依赖:
pip install pywin32

之后在你的自定义脚本开头添加如下代码:

import win32file
win32file._setmaxstdio(2048)
  • 方案4:使用WSL2运行mitmdump
    如果需要处理高并发请求,推荐在WSL2(Windows子系统Linux)环境中运行mitmdump,Linux平台默认的文件描述符上限远高于Windows,且不存在select调用的512阈值限制,稳定性远高于原生Windows运行。
额外排查点

检查你的自定义Python脚本是否存在文件描述符泄漏问题:比如打开的文件句柄用完未关闭、发起的额外网络连接未正确释放,这类泄漏会快速消耗文件描述符,即使并发量不高也会触发报错。

内容的提问来源于stack exchange,提问作者kkkino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:54:03