Network programming 动态修改HTTP url

Network programming 动态修改HTTP url,network-programming,packet-injection,Network Programming,Packet Injection,是否可以将用户的HTTP请求修改为 www.example.com/options 而不是 www.example.com/options_and_params 我的设想是,大约30000名用户连接到我公司的网络主干,我想在主干交换机和Radware LoadProof之间添加一个或多个服务器(使用我目前正在处理的代码),以实现这项工作 在谷歌搜索了一整夜后,我没有线索,但还有一些问题: 我不需要通过网络截获每个数据包。有了iptables之类的帮助,我可以过滤出我想要的包。我在使用ipta

是否可以将用户的HTTP请求修改为

www.example.com/options
而不是

www.example.com/options_and_params
我的设想是,大约30000名用户连接到我公司的网络主干,我想在主干交换机和Radware LoadProof之间添加一个或多个服务器(使用我目前正在处理的代码),以实现这项工作

在谷歌搜索了一整夜后,我没有线索,但还有一些问题:

  • 我不需要通过网络截获每个数据包。有了iptables之类的帮助,我可以过滤出我想要的包。我在使用iptables之前已经做过了。然而,数据包并不等于HTTP流。我需要重新构造HTTP吗
  • 若我成功地找到了修改HTTP请求URL内容的方法,我仍然应该将其放回网络流。据我所知,TCP数据包有一个校验和,在我修改内容后,它一定是错误的。如何计算新的校验和并将数据包放回网络

  • 这是我第一次做网络编程或数据包处理开发。任何建议都将不胜感激。

    如果我没有弄错您的问题,那么这可能可以通过像nginx这样的快速反向代理来实现。

    这取决于您是在执行HTTP/1.0还是HTTP/1.1,以及您是需要修改初始请求还是在单个HTTP 1.1会话中修改所有请求

    如果您拥有数据包,并且可以在发送之前对其进行修改,并且您正试图仅修改请求,那么给定一个典型数据包的长度以及HTTP请求流中URL的位置(非常接近开始处)事实上,它将是TCP流中发送的第一个内容,我认为您可以相当安全地假设它将出现在发送的第一个数据包的前N个字节中,因此不会被拆分为多个数据包

    但是,如果这是一个HTTP/1.1流,那么将通过同一个TCP连接发送多个请求,在这种情况下,在将来的请求中,URL很可能被拆分为两个TCP数据包

    如果您可以强制HTTP/1.0,或者如果您将初始或所有请求修改为HTTP/1.0,那么您可以非常确定第一个数据包将对应于TCP流的第一个数据包,并且您不太可能看到URL在多个数据包上被拆分,意味着没有重建和能力,只是做一个替换

    然而,这将以新的TCP连接为代价,这是非常低效的


    如果您不这样做,并将其保留为HTTP/1.1,则URL可能在将来的任何请求中处于任意点,因此会拆分为多个TCP数据包(根据URL的大小,实际上是两个数据包)。

    在服务器级别上不可能使用简单的重写规则吗?它们应该适合添加参数。请参阅的
    自动应答器
    。抱歉,你可以使用它的c#库。@arkascha重写规则不能满足我的需要。该网站不在我的公司内运行,我无法控制它。请注意不要提出任何法律问题。拦截和修改他人的通讯可以很快被视为严重犯罪……呼吁透明。不要无形中扮演中间人。返回HTTP 302重定向。这也让你的工作更轻松。