【发布时间】:2016-09-25 17:21:57
【问题描述】:
我正在使用mitmproxy,一个用于 HTTP 的 python 中间人 (MITM) 代理,以动态修改某个网站的 HTTP 请求。
目标:
出于测试目的,当它接收到一个 HTTP 请求时,它应该保存它(它接收到一个HTTPFlow 对象),下次发出相同的请求时,我需要重新发送完全相同的 data/html /header/resources/ecc.. 到浏览器。
问题:
显而易见的解决方案是序列化对象,但它不可序列化!
我不能简单地将其保存在内存中,因为我需要在测试期间重新启动代理
我可以做些什么来实现我的目标?
详情:
我已经尝试过 pickle、cPickle 和 marshal,但出现以下错误:
定义了 __slots__ 而没有定义 __getstate__ 的类不能腌制
无法腌制 CDataGCP 对象
- ValueError:不可编组的对象
想法:
- 1) 更改原始对象使其可序列化有多大的坏处?我该怎么做?
- 2) 如果主进程与第二个始终处于活动状态的 python 进程通信,该进程只是将对象保存在内存中,该怎么办? 他们还需要通信 obj 序列化它们吗?
【问题讨论】:
标签: python serialization ipc mitmproxy