HTTP代理与防火墙

本文介绍了如何利用HTTP代理在满足防火墙约束的情况下访问受限网站。通过两种策略,包括利用代理转发HTTP请求以改变目的IP显示,以及加密传输数据以规避内容分析。文章提供了简单的Java实现示例,讨论了不同代理实现的优缺点,并提到了NAT路由器的虚拟服务器功能在实际应用中的作用。
摘要由CSDN通过智能技术生成

最近学习HTTP,所以想到能不能使用HTTP代理(HTTP中继(代理)、隧道相关介绍及简单Java实现)进行一些简单改造,在既能满足防火墙约束的前提下,又能够访问一些想要的网站。

(以上文章是在学习HTTP协议过程中,为了不枯燥,简单的写了小代理实现,以有学下去的欲望,有不对的地方还请大家多多指正,谢谢!)

以下实验前提条件:
1、首先具备一台防火墙之外的电脑

首先针对能想到的防火墙限制方式,及针对不同限制想到的简单代理实现进行分析:

1、针对目的IP进行限制的防火墙,在防火墙之内的所有主机都无法访问某些特定目的主机:
分析
  既然是根据目的IP进行限制的,那么是否可以使用HTTP代理(防火墙之外的主机开启代理),让代理去转发HTTP请求,并响应给客户端浏览器,这样防火墙看到的客户端浏览器真正的访问的目的地址其实为代理服务器,这样防火墙就会允许主机的网络流量通过:

简单的时序图:
这里写图片描述
简单说明:
  可以看到其实整个过程,如果防火墙不对传输内容进行分析的话,防火墙是不会知道客户端浏览器在与哪个真正的Wed服务器进行通讯,所以这种方式可以简单的绕过进行目的地址限制的防火墙

2、大家都知道HTTP在整个传输过程中都是明文传输的,包括访问的Web服务器的地址,端口号,都会在传输的HTTP消息中进行体现,所以如果防火墙去分析HTTP消息的话是可以查看到真正的Web Server地址信息的;
  此处说明一下关于HTTPS,虽然在整个HTTP消息传输过程中是加密的,但是通过代理的隧道建立过程,HTTP消息是明文传输的,且消息中就包含真正的Web服务器地址和端口号。
思考:
  那是否可以,将所有数据加密传输到防火墙之外的服务器上,然后防火墙之外的代理去解密数据,并进行实际的代理转发;
简单的时序图:
这里写图片描述
简单说明:
  其实第二种方式与第一种方式相比较而言,没有太大的区别,主要是多了一个本地代理,用于接收浏览器的数据,然后对数据进行加密传输到防火墙之外的代理之中,防火墙之外的代理在接收到消息之后,再去解密明文数据,然后去请求真正的Web,完成数据请求,并原路加密返回。

附件中会添加一个简单的第二种方式实现:
  因为主要说明一下思路,没有环境去实践(用局域网内俩台主机进行试验,并使用WireShark进行抓包分析),并且写博客主要是为了分享一下自己的学习HTTP协议的过程,所以代码示例采用了最简单,但是不合理的方式,下面会给出一个感觉比较好的方式(未实现)
1、首先示例中的方式
  (不建议去看,就是针对上述理论做的一个简单Demo,都是怎么简单怎么来的,而且使用的是每一个浏览器到代理的连接,就会开启一个本地代理到防火墙之外代理的加密连接,很浪费连接(加密使用的是Java的SSLSocket编程),并且加密层的握手过程很慢、很耗资源,注定示例效率会很低,描述一下实现方式:
这里写图片描述
说明:
  可以看到每有一个浏览器到Web Server的连接,就会在(俩个代理之间)创建一个连接,因为连接是加密的(使用Java的SSLSocket编程),所有每个连接都会进行一次握手,而且连接可能保持时间很短(参考HTTP协议长连接),所以效率上将不可取;
  但是,实现简单,因为所有连接都是一对一,浏览器–》本地代理, 本地代理–》远端代理, 远端代理 –》Web Server,所以直接在连接之间直接传递数据,无需关注对应关系,不会发生本地代理传输过来的本该发给Web Server1的数据,被发送到Web Server2中;

2、简单的一个设想减少本地代理和远端代理直接连接数的方式:
说明:
这里写图片描述
  可以看到代理与代理之间的连接数减少了,所有浏览器到Web Server的数据都通过少数的连接进行通讯传输数据,代理在从代理之间的隧道收到数据之后,需要选择对相应的连接将数据传输出去;
  可以看到实现起来较为复杂,因为需要代理自己维护数据与连接的对应关系,代理必须能够正确的区分,从代理之间的连接中收到的数据,应该往“浏览器”或者“WebServer”的哪个连接中发送,代理之间必须交互,保证从浏览器传输过来的数据不会被发送到错误的Web Server,同理响应也是。

PS:关于防火墙之外的主机说明(以常

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值