我们经常在网络浏览器代理设置中发现类似地址(Address)、端口(Port)的列。我知道当我们使用代理访问网页时,网络浏览器会从代理服务器请求网页,但我想知道的是整个机制是如何工作的?我观察到许多ISP仅允许在我们用尽免费数据用量后访问单个IP(其网站)。但是当我们在代理URL中输入要浏览的网站,然后输入允许的IP地址,该网站就会被加载。这是如何工作的呢?
一般来说,您的浏览器会简单地连接到代理地址和端口,而不是DNS名称解析出的任何IP地址。然后,它按照正常的方式进行网页请求。Web代理读取头文件,使用HTTP/1.1的"Host"头文件确定请求应该去哪里,然后自己进行请求并在两个方向上传递所有剩余的数据。代理通常还会做缓存,因此如果另一个人从该代理请求相同的页面,则可以返回先前的结果。(这是简化了--缓存是一个复杂的话题)由于代理完全控制连接,它可以选择将请求路由到其他位置,抓取请求和回复数据,注入其他内容(如广告)或完全阻止您。使用SSL来保护自己。一些Web代理是“透明”的。它们驻留在必须通过其中所有IP流量的网关上,并使用机器的网络堆栈将输出连接重定向到本地端口80。然后它的行为与在浏览器中定义代理相同。其他代理,如SOCKS,具有专用协议,允许进行非HTTP请求。
有两种类型的HTTP代理,一种是反向代理,另一种是正向代理。 网络浏览器使用正向代理,基本上是通过代理发送所有的HTTP流量,代理将把这些流量发送到互联网。每个从您的计算机发出的HTTP数据包,在前往目标站点之前都会发送到代理服务器。当使用代理时,ISP阻止不起作用,因为每个从您的计算机发出的数据包都指向代理而不是目标站点。代理可能通过另一个没有任何阻塞的ISP获得互联网连接。