HTTP-代理

news2024/10/6 14:37:38

HTTP-代理

web代理服务器是网络的中间实体,代理位于客户端和服务器之间,扮演者中间人的角色,在各端点之间来回传递http报文

web的中间实体

web上的代理服务器是代表客户端完成事务处理的中间人,如果没有web代理,http客户端直接和http服务器进行对话,有了代理,客户但就可以和代理进行对话,然后由代理代表客户端向服务器进行交流。客户端任然会完成对事务的处理。

私有和共享代理

代理服务器可以是某个客户端专用的,也可以是很多客户端共享的,单个客户端专用的代理称为私有代理,众多客户端共享的代理称为公共代理。

公共代理

大多数代理是公共的共享代理,集中式的代理成本效率更高,更容易管理,高速缓存代理服务器,会利用用户之间共同的请求,这样的话,汇入同一个代理服务器的用户越多,就越有用。

私有代理

专用的私有代理不常见,但是确实存在,尤其是直接运行在客户端计算机的时候,有的浏览器辅助产品,以及一些isp服务器,会在用户的pc上直接运行一些小型的代理,拓展浏览器的特性,提高性能。为免费的isp服务提供主机广告。
在这里插入图片描述

代理和网关的对比

代理连接的是两个或者多个使用相同协议的应用程序,而网关连接的是两个或者多个使用不同协议的端点。客户端和服务器使用的是不同的协议,客户端也可以通过它完成和服务器直接的事务处理。
在这里插入图片描述

代理和网关之间的区别很模糊,浏览器和服务器实现的是不同版本的http,代理也需要做一些协议转换工作,而商业化的代理服务器也会实现网关的功能来支持ssl安全协议,socks防火墙,ftp访问,以及基于web的应用程序

使用代理

代理服务器可以看到并接触到所有流过的http流量,所以代理可以监视流量并对其进行修改,以实现很多有用的增值web服务器。

  1. 儿童过滤器
    小学在为教育站点提供无阻碍访问的同时,可以利用过滤器代理来阻止学生访问成人内容

  2. 文档访问限制
    可以用代理服务器在大量的web服务器和web资源之间实现同一的访问控制策略,创建审核跟踪机制。
    在这里插入图片描述

  3. 安全防火墙
    网络工程师使用代理服务器来提高安全性,代理服务器会在网络中的歹意安全节点上限制应用层协议的数据可以流入或者流出一个组织,还可以提供来消除病毒的web和email代理使用的那种挂钩程序,以便对流量进行详细的检查
    web缓存: 代理缓存了常用文档的本地副本,并将它们按需提供,减少缓慢而昂贵的互联网通信
    反向代理:代理可以假扮web服务器,这些被称为替代物或者反向代理的代理接受发给web服务器的真实请求,但是和web服务器不同的是,可以发起对其他服务器的同行,以便可以按照需求定位所请求的内容。
    可以使用这些反向代理来提高访问慢速web服务器上公共内容时的性能,这种配置中,通常将这些反向代理成为服务器加速器,还可以将替代物和内容路由功能配合使用,以创建按按需复制内容的分布式网络。
    在这里插入图片描述

内容路由器: 代理服务器可以作为内容路由器使用,根据英特网的流量状况以及内容类型将请求导向特定的web服务器
内容路由器可以用来实现各种服务级的请求,如果用户或者内容提供者付费要求提供更高的性能,内容路由器可以将请求转发到附近的赋值缓存,如果用户申请了过滤服务,还可以通过过滤来转发http请求。
转码器: 代理服务器在将内容发送给服务器之前,可以修改内容的主体格式,在这些数据表示法之间进行的透明转码被称为转码
匿名者:匿名者会主动从HTTP报文中删除身份特征,比如客户端ip地址,from首部,referer首部,cookie,uri的会话id,从而提供高度私密性和匿名性

  1. 从user-agent首部删除用户计算机和os类型
  2. 删除from首部以保护用户的email地址
  3. 删除referer首部来掩盖用户访问过的其他站点
  4. 删除cookie首部提出概要信息和身份的数据。

代理去处

代理服务器的部署

出口代理

可以将代理固定在本地网络的出口点,方便控制本地网络和大型因特网之间的流量。

访问(入口)代理

代理常被放在isp访问点上,用来处理来自客户的去和请求,isp使用缓存代理来存储常用文档的副本,提高用户的下载速度,降低英特网的带宽耗费。

反向代理

代理通常会被部署在网络边缘,在web服务器之前,作为替代物使用,在这里可以处理所有传送给web服务器的请求,并不是旨在必要的时候向web服务器请求资源,替代物可以提高web服务器的安全特性,或者将快速的web服务器换缓存放在较慢的服务器之前,以提高性能,反向代理童话参观会直接冒用web服务器的名字和ip地址,这样所有的请求是发送给代理而不是服务器了。

网络交换代理

可以将具有足够的处理能力的代理放在网络之前的因特网对等交换点上,通过缓存来减轻英特网节点的拥塞,并对流量进行监视

代理的层次结构

可以通过代理层次结构将代理级联起来,在代理的层次结构中,会将报文从一个代理传给另一个代理,直到最终抵达原始服务器位置,然后通过代理传回给客户端
在这里插入图片描述

proxy层次结构中的代理服务器被赋予了父和子的关系,下一个入口代理(靠近服务器)被称为附带里,下一个出口代理靠近客户端被称为自带里,代理1是代理2的子代理,代理2是代理3的自代理,代理3是代理2的父代理

代理层次结构的内容路由

代理层次结构是静态的,代理1总是会将报文转发给代理2,代理2总是会将报文转发给代理3,但是层次不一定非得是静态的,代理服务器可以根据众多因素,将报文转发给一个不断变化的代理服务器和原始服务器集。

  • 如果所请求的对象属于一个付费使用内容分发服务的web服务器,代理就会将请求发送给附近的一个缓存服务区,这个服务器会返回已缓存对象,或者如果它没有的话,会取回内容。

  • 如果请求的是特定类型的图片,访问代理会将请求转发给一个特定的压缩代理,这个代理会获取图片,然后对其进行压缩,这样通过客户端的慢速modem下载,速度会更快。
    在这里插入图片描述

  • 负载均衡
    自代理可能会根据当前父代理上的工作负载级别来决定如何选择一个附带里,以负载均衡

  • 地理位置附近的路由
    子代理可能会选择负责原始服务器所在的物理区域的代理

  • 协议/类型路由
    子代理可能可能会根据URI将报文转发到不同的附带里和原始服务器上去,某些特定类型的URI可能要通过一些特殊的代理服务器转发请求,以便进行特殊的协议处理。

  • 基于订购的路由
    如果发布者为高性能服务额外付费了,它们的URI就会被转发到大型缓存或者压缩引擎上去,以提高性能

代理是如何获得流量的

客户端通常会直接和web服务器进行同i选哪个,所以想要解释清楚HTTP流量怎样才能首先流向代理,有四种常见的方式可以使得客户端流向代理。

  • 修改客户端
    很多web客户端,有手动和自动的代理配置,如果将客户端配置为使用代理服务器,客户端就会将HTTP请求有意的直接发送给代理,而不是原始服务器。
  • 修改网络
    网络基础设施可以通过若干种技术手段,在客户端不知道,或者是没有参数的情况下,拦截网络流量并导入代理,这种拦截通常是监视HTTP流量的交换设备和路由设备,在客户端毫不知情的情况下,对其进行拦截,并将流量导入一个个代理, 这种代理称为拦截代理。
  • 修改DNS的命名空间
    放在web服务器之前的代理服务器-替代物,会直接假扮web服务器的名字和ip地址,这样,所有的请求就会发送给这些替代物,而不是服务器了,要实现这一点,可以手动编辑DNS名称列表,或者用特殊的动态DNS服务器根据需要来确定适当的代理和服务器,在安装过程中,真实服务器的ip地址和名称被修改了,替代物得到的是之前的地址和名称。
  • 修改web服务器
    也可以将某些web服务器配置为客户端发送一条HTTP重定向命令,将客户端请求重定向到一个代理上去,收到重定向命令之后,客户端会和代理进行通信。
    在这里插入图片描述

客户端的代理设置

手工配置: 显示的设置要使用的代理
预先配置浏览器: 浏览器厂商或发行商会在将浏览器发送给其他客户之前预先对浏览器或者所有其他web客户端的代理设置进行手工配置。
代理的自动配置: 提供一个URI,指向一个JavaScript语言编写的代理自动配置文件,客户端会取回这个JavaScript文件,并运行它决定是否应该使用一个代理,如果是的话,应该使用哪个代理服务器。
WPAD的代理发现: 有些浏览器支持web代理自动发现协议,这个协议会自动检测处浏览器可以从那个配置服务器下载到一个自动配置文件。

手工配置

PAC文件

PAC文件是一个小型的JavaScript程序,可以在运行过程中计算代理设置,因此,是一种更加动态的代理配置解决方案。访问每个文档的时候,JavaScript函数都会选择恰当的代理服务器。

WPAD客户端代理配置

WPAD协议的算法会使用发现机制的逐级上升策略自动为浏览器查找合适的PAC文件,实现WPAD协议的客户端需要:

  1. 用WPAD找到PAC的URI
  2. 从指定的URI获取PAC文件
  3. 执行PAC文件来判定代理服务器
  4. 为请求使用代理服务器
    WPAD会使用一系列的资源来发现技术判定适当的PAC文件,并不是组织所有能够使用的发现的技术,所以WPAD使用了很多发现技术,WPAD会一个接着一个的对每个技术进行尝试,直到成功为止。
  • 动态主机配置协议
  • 服务定位协议
  • DNS知名主机名
  • DNS SRV记录
  • TXT记录中的DNS服务器URI

请求代理有关的问题

代理URI和服务器URI不同

客户端向服务器而不是代理发送请求的时候,HTTP请求报文的URI会有所不同
客户端向Web服务器发送请求的时候,请求行中只包含部分的URI

GET /index.html HTTP/1.0
User-Agent: SuperBrowser v1.3

当客户端向代理发送请求的时候,在请求行中包含完整的URI

GET http://www.marys-antiques.com/index.html HTTP/1.0
User-Agent: SuperBrowser v1.3

在原始的HTTP设计中,客户端会直接与单个服务器进行对话,不存在虚拟主机,也没有为大力制定什么规则,单个服务器都知道自己的主机名和端口,所以,为了避免发送冗余信息,客户端只发送部分URI即可,无需发送方案和主机
拦截代理是网络流量中的代理服务器,它会拦截从客户端发往服务器的请求,并提供一个缓存响应,或对其进行转发
在这里插入图片描述

代理既可以处理代理请求,也可以处理服务器请求
  • 如果提供的是完整的URI,代理就应该使用这个完整的URI
  • 如果提供的是部分URI,而且有Host首部,就应该使用Host首部来确定原始服务器的名字和端口号
  • 如果提供的是部分 URI,而且没有 Host 首部,就要用其他方法来确定原始服务器
    1. 如果代理是代表原始服务器的替代物,可以用真实服务器的地址和端口号来配置代理;
    2. 如果流量被拦截了,而且拦截者也可以提供原始的IP地址和端口,代理就可以使用拦截技术提供的 IP 地址和端口号
    3. 如果所有方法都失败了,代理没有足够的信息来确定原始服务器,就必须返回一条错误报文(通常是建议用户升级到支持 Host 首部的现代浏览器)
没有代理的时候URI的解析

在这里插入图片描述

有显示代理时URI的解析

在这里插入图片描述

有拦截代理时URI的解析

在这里插入图片描述

  1. 用户在浏览器的 URI 地址窗口中输入 oreilly
  2. 浏览器通过 DNS 查找主机 oreilly,但DNS服务器失败了,并回送响应说明主机未知
  3. 浏览器进行了自动扩展,将 oreilly 转换成 www.oreilly.com
  4. 客户端已经成功解析了主机名,并有了一张 IP 地址列表。有些IP地址可能已经停用了,所以,通常客户端会尝试着连接每个 IP 地址,直到成功为止。对拦截代理来说,第一次连接请求就会被代理服务器拦截成功,不会连接到原始服务器上去。客户端认为它在与 Web 服务器进行成功的对话,但那个 Web 服务器可能甚至都不处于活跃状态
  5. 当代理最终准备与真正的原始服务器进行交互的时候,代理可能会发现那个ip地址实际上是一个停用的服务器,为了提供和浏览器相同级别的容错机制,代理可以通过解析host首部的主机名,也可以通过对ip地址的反向dns查找来尝试其他ip地址,将浏览器配置为显示代理的时候,会依赖代理的容错机制,对于拦截和响应的代理实现来说,在dns解析到已停用服务器的时候,提供容错机制是很重要的

追踪报文

将web请求从客户端传送到服务器的路径上,经过两个或者多个代理是非常常见的,很多公司会使用缓存代理服务器来访问互联网,而且大型的isp都会使用代理缓存来实现提高性能并实现各种特性,想到比例的web请求都是通过代理转发的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1828962.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

拍抖音素材段子去哪里找?哪里有搞笑段子文案以及视频素材?

拍抖音视频非常火爆,很多人都在为找素材发愁。别担心,今天我给大家推荐几个非常不错的网站,保证你们找到满满的灵感,拍出更有趣的段子视频! 蛙学府 首先要推荐的是蛙学府。这个网站不仅素材多,还提供各种段…

ChatGPT 网页会话过程数据传输分析以及横向对比

新建一个会话 https://chatgpt.com/backend-api/conversation POST 请求 {"action": "next","messages": [{"id": "aaa2d6d4-5a8b-473e-bd21-e3bf2ee4f571","author": {"role": "user"},&…

matlab动画模拟三体问题,微分方程,动力学

介绍 三体问题(Three-Body Problem)是经典力学中的一个著名问题,它研究的是三个质量相似的天体在相互引力作用下的运动规律。这个问题最早由艾萨克牛顿(Isaac Newton)在1687年的《自然哲学的数学原理》中提出&#xf…

oracle RAC安装 保姆级教程

使用SSHXmanager 我的本地IP是172.17.68.68 服务器配置 [rootrac12-1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #Public IP …

全网爆火《pvz植物大战僵尸杂交版》最新安装包,Android、Windows、ios安装包+教程!

今天阿星想和大家分享一个最近在B站上引起轰动的老游戏——《植物大战僵尸》! 是的,你没听错,就是那个曾经让我们熬夜到天亮,一关接一关挑战的游戏。 让我们来聊聊,这款游戏怎么就突然又火了起来呢? 原来…

[Linux] UDP协议介绍:UDP协议格式、端口号在网络协议栈那一层工作...

TCP/IP网络模型, 将网络分为了四层: 之前的文章中以HTTP和HTTPS这两个协议为代表, 简单介绍了应用层协议. 实际上, 无论是HTTP还是HTTPS等应用层协议, 都是在传输层协议的基础上实现的 而传输层协议中最具代表性的就是: UDP和TCP协议了. 以HTTP为例, 在使用HTTP协议通信之前, …

上海磐璟物流设备携物流笼车、金属周转箱等盛装亮相2024杭州快递物流展

上海磐璟物流设备有限公司携物流笼车、金属周转箱、周转架等物流设备盛装亮相2024长三角快递物流展(杭州),7月8日杭州国际博览中心3C馆C09-1与您相约! 我公司是集研发、设计、生产、销售、服务为一体的物流装备企业;1…

【学习-华为HCIA数通网络工程师真题(持续更新)】(2024-6-16更)

1、在 VRP 平台上,可以通过下面哪种方式访向上条历史命令? 上光标 (ctrlU 为自定义快捷键,ctrlP 为显示历史缓存区的前一条命令,左光标为移动光标) 2、主机 A (10.1.1.2/24)和主机 B…

函数(上)(C语言)

函数(上) 一. 函数的概念二. 函数的使用1. 库函数和自定义函数(1) 库函数(2) 自定义函数的形式 2. 形参和实参3. return语句4. 数组做函数参数 一. 函数的概念 数学中我们其实就见过函数的概念,比如:一次函数ykxb,k和b都是常数&a…

acwing 5575. 改变数值 | c++题解及解释

acwing 5575. 改变数值 题目 代码及解释 #include <iostream> #include <cstring> #include <algorithm> #include <unordered_map> using namespace std;const int N305; int a[N],b[N]; unordered_map<int,int>f[N]; const int INF1e9;int gc…

DDPAI盯盯拍记录仪删除后的恢复方法(前后双路)

DDPAI盯盯拍行车记录仪的口碑相当不错&#xff0c;其产品一直以行车记录仪为主&#xff0c;曾经使用过比较早的产品&#xff0c;体验还不错。下面来看下这个DDPAI的视频恢复方法。 故障存储: 64G存储卡 /文件系统&#xff1a;FAT32 故障现象: 在发生事故后在记录仪上看到了…

《全职猎人》

《全职猎人》 [1-2]是日本漫画家富坚义博的作品。 1999年版改编电视动画由日本动画公司负责动画制作&#xff0c;于1999年10月16日&#xff0d;2001年3月30日在富士电视台播出&#xff0c;该动画的故事至贪婪之岛篇章结束&#xff0c;全92话。 该作在富坚义博老师天马行空的想…

mysql-connector下载教程(手把手)

下载一个第三方库主要有三种途径&#xff1a; 去官方网站 Oracle 官网去github去Maven中央仓库 前两个方法比较麻烦&#xff0c;你还需要去找。 这里就只介绍maven的方法 Maven类似于手机app的应用商店。 操作步骤&#xff1a; 点击右边进入官网Maven中央仓库 在搜索框中…

内存泄漏 内存溢出

概念 内存泄漏&#xff1a;是程序没有正确的释放已分配的内存&#xff0c;造成系统内存的浪费。内存泄漏很难发现&#xff0c;因为他不会直接导致程序崩溃&#xff0c;而是会慢慢降低程序的性能。 内存溢出&#xff1a;系统中存在无法回收的内存或使用的内存过多&#xff0c;…

618大促背后的智能力量:天润融通如何用AI大模型提升客户服务?

五一结束之后&#xff0c;消费零售企业马上又要进入一场紧锣密鼓的新战斗——618&#xff0c;一场上半年最重要的促销活动。 对品牌和商家来说&#xff0c;每年618都是一场新考验。因为618时间有限&#xff0c;而消费趋势总是在不断变化&#xff0c;市场竞争又越来越激烈。如何…

React写一个 Modal组件

吐槽一波 最近公司的项目终于度过了混乱的前期开发&#xff0c;现在开始有了喘息时间可以进行"规范"的处理了。 组件的处理&#xff0c;永远是前端的第一大任务&#xff0c;尤其是在我们的ui库并不怎么可靠的情况下&#xff0c;各个组件的封装都很重要&#xff0c;而…

【Python】Python实现解压rar文件

Python实现解压rar文件 零、需求 最近在开发一个填分数的应用&#xff0c;需要用到selenium&#xff0c;那么自然需要用到浏览器&#xff0c;浏览器内置到应用中&#xff0c;但是上传到GitCode的时候被限制了&#xff0c;单个文件大小只能是10M以内。所以只能压缩&#xff0c…

Folx软件安装教程及最新版下载

简介&#xff1a; Folx Pro是一款适合Mac的专业下载工具也是一款BT下载器&#xff0c;Folx中文版有一个支持Retina显示的现代界面&#xff0c;提供独特的系统排序、存储下载内容与预览下载文件。Folx中文官网提供Folx教程、激活码、下载。 安 装 包 获 取 地 址&#xff1a; …

轻松实现H5页面下拉刷新:滑动触发、高度提示与数据刷新全攻略

前段时间在做小程序到H5的迁移&#xff0c;其中小程序中下拉刷新的功能引起了产品的注意。他说到&#xff0c;哎&#xff0c;我们迁移后的H5页面怎么没有下拉刷新&#xff0c;于是乎&#xff0c;我就急忙将这部分的内容给填上。 本来是计划使用成熟的组件库来实现&#xff0c;…

Linux,shell ,gun基本概念和关系

Linux 系统简单架构图 1、命令行界面&#xff08;CLI&#xff09;和图形用户界面 (GUI) 1、图形界面就是我们常用的windows系统这种&#xff0c;打开文件&#xff0c;双击一下。想选择哪个文件&#xff0c;就鼠标移动到哪里选择就行。 2、命令行界面就是下面这种只有黑乎乎的…