我正在编写一个通过HTTP与远程服务器通信的客户端。我想在客户端和服务器之间放置一个邪恶的代理,它会(随机地)影响线路上的流量。
我想要发生的一些事情:
基本上我想模拟这个软件的用户将在现实世界中体验的一系列网络条件,并确保客户端优雅地处理它们。
我怀疑(希望)类似的东西已经存在。请指出我正确的方向!
由于
答案 0 :(得分:5)
HTTP Test Tool (htt)似乎就像你需要的那样。当模拟框架不足以完成任务时,它具有the ability to operate as a proxy and a reverse-proxy来专门测试这些案例。
对于真正的邪恶代理,请考虑将Squid与Metasploit Framework以及BackTrack Linux中的一些工具结合使用。但这似乎有点超出了你的项目范围!
答案 1 :(得分:3)
Fiddler 1是一个可编写脚本的流量查看器/代理。
答案 2 :(得分:3)
您可以尝试fiddler - 您编写的所有内容都可以使用该工具进行模拟。它也适用于调试应用程序和服务器之间的通信问题。我在实现XML-RPC时为我节省了很多工作。
有一些很棒的扩展可以帮到你,如果你需要一些特别的东西,你甚至可以write your own。
[编辑] 由于这是mac问题,您可以尝试webscarab或charles(第二个付费)。但你仍然可以在任何机器上运行代理 - 甚至是虚拟机。所以,如果你有多余的获胜许可......
答案 3 :(得分:2)
由于您使用的是Mac,因此系统内置了ipfw
。从终端man ipfw
获取信息。
ipfw
管理防火墙规则,包括一组称为“Dummynet”的规则,可用于引入数据包丢失和延迟。这并不能解决您的所有问题,但它可以让您在不涉及额外软件的情况下影响网络级别的流量。
我发现an article on WaterRoof似乎是一个支持Dummynet的GUI ipfw
规则编辑器。可能还有其他人。
另请查看使用Dummynet进行流量整形的this AFP548 article。如果你在命令行上相当舒服,你应该很高兴。
请注意,Dummynet不会为您在问题中列出的所有内容提供工具;它只允许您模拟许多网络问题,如延迟和数据包丢失。对于任何涉及HTTP级别数据更改的内容,我同意其他人fiddler可能是使用的工具。
还了解Chrome / Chromium的“Inspect Element”工具。 (右键单击,然后从大多数上下文菜单的底部选择它。)它提供了HTTP客户端和服务器头的详细信息,以及修改隐藏表单变量,记录整个会话以供以后查看等的功能。非常方便东西。