本文转自:http://www.cnblogs.com/TankXiao/archive/2012/12/12/2794160.html

本文介绍一些HTTP代理服务器的概念和工作原理

阅读目录

  1. 什么是代理服务器
  2. Fiddler就是个典型的代理
  3. 代理作用一:FQ
  4. 代理作用二:匿名访问
  5. 代理作用三:通过代理上网
  6. 代理作用四:通过代理缓存,加快上网速度
  7. 代理作用五:儿童过滤器
  8. IE代理设置:手动设置代理
  9. IE代理设置:使用自动配置脚本(PAC)
  10. IE代理设置:自动探测设置(WPAD)
  11. 代理认证,407状态码
  12. 使用代理服务器的安全问题
  13. 如何搭建代理服务器

什么是代理服务器

Web代理(proxy)服务器是网络的中间实体。 代理位于Web客户端和Web服务器之间,扮演“中间人”的角色。

HTTP的代理服务器即是Web服务器又是Web客户端。

Fiddler就是个典型的代理

Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1, 端口:8888. 当Fiddler退出的时候它会自动注销代理,这样就不会影响别的程序。

代理的作用一, FQ

很多人都喜欢用Facebook, 看youTube。但是我们在天朝,天朝有The Great of Wall(长城防火墙),屏蔽了这些好网站。  怎么办?   通过代理来跳墙,就可以访问了。

自己去寻找代理服务器很麻烦, 一般都是用FQ软件来自动发现代理服务器的。

代理的作用二, 匿名访问

经常听新闻,说”某某某“在网络上发布帖子,被跨省追缉了。   假如他使用匿名的代理服务器,就不容易暴露自己的身份了。

http代理服务器的匿名性是指: HTTP代理服务器通过删除HTTP报文中的身份特性(比如客户端的IP地址, 或cookie,或URI的会话ID), 从而对远端服务器隐藏原始用户的IP地址以及其他细节。 同时HTTP代理服务器上也不会记录原始用户访问记录的log(否则也会被查到)。

代理的作用三, 通过代理上网

比如局域网不能上网, 只能通过局域网内的一台代理服务器上网。

代理的作用四, 通过代理缓存,加快上网速度

大部分代理服务器都具有缓存的功能,就好像一个大的cache, 它有很大的存储空间,它不断将新取得数据存储到它本地的存储器上, 如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传给用户的浏览器,这样就能显著提高浏览速度。

代理的作用五:儿童过滤器

很多教育机构, 会利用过滤器代理来阻止学生访问成人内容。

IE代理设置:手动设置代理

IE浏览器可以手动设置代理, 很简单,指定一个IP地址和端口就可以了。 如下图。

工具 -> Internet选项 -> 连接 -> 局域网设置 (快捷键)

假如代理服务器的IP地址改变了,或者端口号改变了。 难道要几百个客户端的浏览器去修改浏览器设置? Impossable  这太难维护了。  下面还有一种更高级点的方法。

IE代理设置:使用自动配置脚本(PAC)

手动配置代理很简单,但是不灵活。 只能指定一个代理服务器,而且不支持故障转移。

在大公司里一般都使用PAC文件来配置。只需要指定PAC文件的URL就可以了, 如图:

PAC(Proxy Auto Config)文件是一个小型的JavaScript程序的文本文件,后缀为.dat。

当浏览器访问网络的时候,会根据PAC文件中的JavaScript函数来选择恰当的代理服务器。

sample_pac.dat文件的内容

function FindProxyForURL(url, host) {if (url.substring(0, 5) == "http:") {// 应该使用指定的代理return "PROXY proxy:80";}else if (url.substring(0, 4) == "ftp:") {return "PROXY fproxy:80";}else if (url.substring(0, 7) == "gopher:") {return "PROXY gproxy";}else if (url.substring(0, 6) == "https:") {return "PROXY secproxy:8080";}else {// 直连,不经过任何代理return "DIRECT";}
}

IE代理设置:自动探测设置(WPAD)

浏览器只要选中“自动检测设置”, 就可以使用WPAD协议, WPAD会自动找到PAC文件的URL。  WPAD会使用一系列的资源发现技术(DHCP,DNS等)去寻找PAC文件。

代理认证,和407状态码

代理服务器也可以需要权限认证, HTTP定义了一种名为代理认证(Proxy authentication)的机制。 这种机制可以阻止对内容的请求。

当浏览器访问需要认证的代理时, 代理服务器会返回407 Authorization Required,告诉浏览器输入用户名和密码。

代理认证跟HTTP基本认证是一样的机制, 如需了解代理认证的机制,请看[HTTP协议基本认证]

使用代理服务器的安全问题

代理服务器和抓包工具(比如Fiddler)都能看到http request中的数据。 如果我们发送的request中有敏感数据,比如用户名,密码,信用卡号码。这些信息都会被代理服务器看到。所以非常危险。 所以我们一般都是用HTTPS来加密Http request.  这样代理服务器就看不到里面的数据了。(why??)

如何搭建代理服务器

可以使用CCproxy, 和Squid 来搭建代理服务器。

转载于:https://www.cnblogs.com/xu-xiao/articles/6408362.html

#HTTP协议学习# (六)代理相关推荐

  1. 极客HTTP协议学习笔记破冰篇(1-7)

    极客HTTP协议学习笔记破冰篇(1-7) 前言 各篇章笔记链接 一.学习笔记 1.HTTP的前世今生 2.HTTP是什么 3.与HTTP相关的各种概念(上) 4.与HTTP相关的各种概念(下) 5.常 ...

  2. 《透视 HTTP 协议学习》摘录

    透视 HTTP 协议学习 01 | 时势与英雄:HTTP的前世今生 1989 年,任职于欧洲核子研究中心(CERN)的**蒂姆·伯纳斯 - 李(Tim Berners-Lee)**发表了一篇论文,提出 ...

  3. (转)MyBatis框架的学习(六)——MyBatis整合Spring

    http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...

  4. http accept字段有用吗_http协议(六)报文首部

    参考:老张http协议(六)报文首部 报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块.报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变 报文也是网络传 ...

  5. 片上总线协议学习(1)——SiFive的TileLink与ARM系列总线的概述与对比

    link 片上总线协议学习(1)--SiFive的TileLink与ARM系列总线的概述与对比 finally 27 人赞同了该文章 一.背景介绍 随着超大规模集成电路的迅速发展,半导体工业进入深亚微 ...

  6. 网络协议学习笔记 · 22

    IPv6 · 流媒体 · 即时通讯 · 缓存 · 网络爬虫 VPN 作用 VPN与代理的区别 实现原理(隧道协议) 网络爬虫 简易实例 robots.txt 无线网络 缓存(Cache) 响应头 请求 ...

  7. C1认证学习六(HTTPS)

    C1认证学习六(HTTPS) 文章目录 C1认证学习六(HTTPS) 任务学习 任务目标 加密算法 对称加密 非对称加密 不可逆加密 SSL TLS 任务学习 HTTPS是身披 SSL / TLS 的 ...

  8. http协议学习系列

    http协议学习系列 1. 基础概念篇 1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写.它的发展是万维网协会(World Wide Web C ...

  9. GSMA SGP.21协议学习

    GSMA SGP.21协议学习 1简介 1.1概述 本文档提供了一种体系结构方法,作为所有市场中设备的远程SIM配置的建议解决方案.体系结构的主要目标是为设备的远程SIM配置提供必要的凭据以获取移动网 ...

  10. 蓝牙核心协议学习 -- 基带协议(Baseband)

    目录 1 概述 1.1 蓝牙时钟 1.2 蓝牙设备寻址 1.2.1 保留地址 1.3 访问码(ACCESS CODES)                                         ...

最新文章

  1. shell--局部变量
  2. Jenkins 管理界面里提示“反向代理设置有误“的问题解决办法
  3. 代码覆盖率工具 Istanbul 入门教程
  4. 用c++来开发php的底层模块|用c++来开发apache模块,Apache模块开发实例(2)
  5. Docker基本组成 和 基本命令
  6. eclipse IDE中無法打開android模擬器
  7. Mvc Webapi+Fiddler调试 (WebAPI 一)
  8. web.xml文件中mime-mapping
  9. Android.mk 使用 环境 小结
  10. Java 计算月份天数
  11. python老鼠书和蛇鼠_哪种编程语言更好?抓到‘老鼠’就是‘好猫’
  12. 2020-05-26
  13. 谈谈养老保险的那点猫腻 我愤怒了!
  14. manifest文件解决兼容性助手问题
  15. Gitlab: 常用设置
  16. 程序员实习过程中应该掌握的问问题技巧
  17. 哈哈~ 开心死了 厚厚
  18. DELL R720服务器4块sas硬盘组成raid5扩容导致的数据丢失如何恢复
  19. 基于QT的网络视频会议系统---KNVM
  20. Python实现课堂随机提问并语音播报学生姓名!辅导员开心极了!

热门文章

  1. linux下protobuf-c的安装
  2. POJ 1088 滑雪 记忆化搜索
  3. nginx负载均衡fair模块安装和配置
  4. PHP问题Parse error: syntax error, unexpected end of file in
  5. vs2010设置 行号显示
  6. Linux串口编程详解(转)
  7. Javaの网络数据传输之Socket
  8. java static 可见性_java可重入锁可见性分析
  9. 生鲜电商之毒,食行生鲜模式虽好、恐也难解
  10. python--练习--for i in range(2,101)