我想捕获来自Flash游戏的特定HTTP请求,然后更改它收到的HTTP响应。我现在可以使用Fiddler这样做,但我想编写一些以编程方式实现相同的Javascript。是否可以像这样使用JS捕获和更改HTTP浏览器流量?
关于我的动机,我是一个喜欢玩古老Flash游戏的社区的一员。部分游戏涉及将您自己的关卡上传到游戏服务器。不幸的是,这已经破了 - 当您通过游戏从服务器请求级别时,服务器始终报告失败,可能是由于不再维护。因此,为了发挥我们的水平,我们使用Fiddler来捕获游戏的HTTP请求,该请求向服务器请求级别数据,然后通过插入我们的级别数据来改变服务器故障响应。我正在尝试在网页上自动执行此过程。
在Javascript中HTTP数据包嗅探是否可行?或者我们是否会继续受到像Fiddler这样的原生桌面解决方案的限制?
答案 0 :(得分:1)
基于Web的代理完全是一件事。与您当前的解决方案使用Fiddler作为Web浏览器和游戏服务器之间的中介的方式相同,网站可以充当您的浏览器和其他网站之间的中介,只需自己发出HTTP请求,然后将修改后的结果发送到用户。
图表:
浏览器 - >提琴手 - >网页(游戏) - >提琴手 - >浏览器
......大致相当于......
浏览器 - > WebPage(代理服务器) - >网页(游戏) - > WebPage(代理服务器) - >浏览器
理论上,您可以完全使用javascript编写代理服务器(请参阅:full stack javascript)!
但是基于你特别询问 javascript 这一事实,我猜你不会对你的代理页面有意义的后端感兴趣。这可能是个问题。如果您希望您的代理网站完全是客户端javascript,那么您的图表突然看起来更像是这样:
浏览器 - > WebPage(代理服务器) - > 浏览器 - >网页(游戏) - > 浏览器 - > WebPage(代理服务器) - >浏览器
这是一个问题,因为Web浏览器默认采取措施来防止这种行为(请参阅:同源策略[SO不会让我在这个答案中放置超过2个链接。你将需要谷歌这一个。])。我可以想象的大多数客户端javascript代理解决方案在很大程度上违反了同源策略(如果您可以控制为游戏提供服务的站点,您可以查看CORS标头或jsonp请求 - 但听起来这不是一个选项)。
如果您可以设计一个不违反同源策略的解决方案,那么您可能会成功使用完全客户端解决方案。在这种情况下,我建议将异步调用作为起点(参见:jQuery AJAX)。