我正在使用mitmproxy,一个用于 HTTP 的 python 中间人 (MITM) 代理来动态修改某个网站的 HTTP 请求。
目标:
出于测试目的,当它接收到一个 HTTP 请求时,它应该保存它(它接收一个HTTPFlow对象),并且下次发出相同的请求时,我需要重新发送完全相同的数据/html/header/resources/ecc..到浏览器。
问题:
显而易见的解决方案是序列化对象,但它不可序列化!
我不能简单地将它保存在内存中,因为我需要在测试期间重新启动代理
我能做些什么来实现我的目标?
细节:
我已经尝试过pickle、cPickle和marshal,但出现以下错误:
定义 __slots__ 而不定义 __getstate__ 的类不能被腌制
不能腌制 CDataGCP 对象
- ValueError:不可编组的对象
想法:
- 1)改变原始对象以使其可序列化多少是一个坏主意?我该怎么做?
- 2)如果主进程与第二个永远活动的python进程通信,它只是将对象保存在内存中怎么办?他们还需要通信 obj 序列化它们吗?