HTTP协议5之代理--转

代理服务器

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

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

Fiddler就是个典型的代理

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

代理的作用

自己去寻找代理服务器很麻烦, 一般都是用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基本认证是一样的机制

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

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

如何搭建代理服务器

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

时间: 2024-07-28 21:07:11

HTTP协议5之代理--转的相关文章

swift详解之十一------------协议、委托(代理)模式

协议.委托(代理)模式 注:本小节总结协议以及依靠协议实现委托,这将在以后经常被使用.是一个非常重要的模块 看下官方的定义:协议定义了一个蓝图 , 规定了用来实现某一特定工作或者功能所必须的方法和属性,类.结构体.或者枚举类型都可以遵循协议, 并提供具体实现来完成协议定义的方法和功能 . 任意能够满足协议要求的类型都被成为遵循了这个协议 1.协议的语法 协议的关键字:protocol 协议的语法: protocol Pro1{ //这里定义属性或者方法 } 要使一个类或者结构体遵循某个协议 ,

OC中分类、类扩展、Block、协议(由协议引出的代理模式)

一: 分类(Category) 1>Category的概念:就是在不改变原来类的基础上,为类增加一些方法 (1,可以为库中定义的类增加方法:2,可以给自己定义的类增加方           法)仅仅是方法哦 好处:一个类可以有多个文件,编译器会将这些文件按一个类除了,便于团队合作. 2> 代码格式: 自定义类中加分类 Person类 #import "Person.h" @interface Person : NSObject - (void)sayHi; @end @im

@protocol(协议)和@delegate(代理)的个人理解 通俗易懂

protocol:中文叫协议,一个只有方法体(没有具体实现)的类,Java中称作接口,实现协议的类必须实现协议中@required标记的方法(如果有的话): delegate:中文叫代理或委托,是一种设计模式.以协议的方式去体现(可以理解为协议的一种),区别在于代码中常以<xxxDeletgate>标示,以便清晰辨明此为代理. 下面以一个ViewController要绘制TableView来进行说明: 1.要绘制TableView,首先要实现两个协议 UITableViewDataSource

协议protocol和代理delegate的使用

这里的协议是独立的,不再类里面,所以每个类的头文件都要引入#import "MarryProtoco.h"头文件.. 首先新建一个协议 Protocol:MarryProtoco 里面写代理人要执行的方法,或者可选方法 #import <Foundation/Foundation.h> @protocol MarryProtoco <NSObject> //代理人中必须要执行的 . //做饭 - (void)cook; //洗衣服 - (void)washClo

http协议与http代理

TCP/IP协议族 TCP/IP(Transmission Control Protocol/InternetProtocol,传输控制协议/网际协议)是用于计算机通信的一个协议族. TCP/IP协议族包括诸如Internet协议(IP).地址解析协议(ARP).互联网控制信息协议(ICMP).用户数据报协议(UDP).传输控制协议(TCP).路由信息协议(RIP).Telnet.简单邮件传输协议(SMTP).域名系统(DNS)等协议. 1. 应用层 应用层包含一切与应用相关的功能,我们经常使用

协议的应用-代理模式

// //  main.m //  07-协议的应用-代理模式 // //  Created by apple on 13-6-30. //  Copyright (c) 2013年 apple. All rights reserved. // #import <Foundation/Foundation.h> #import "Person.h" #import "Agent.h" #import "NextAgent.h" int

iOS协议、代理、Block和回调、类别

[协议](Protocol) //协议是用来规范接口,实现对象间交互的一种机制.类似于JAVA中的接口,可以模拟. 协议的权限 @optional//可选的 @required//必须的 [代理] 一.代理的概念 [注]代理是实现两个类的对象间通信的一种机制. [委托方]主动方 持有带协议的id指针,可以使用协议. [代理方]被动方 遵从协议,实现方法. 代理回调(反向传值) //当我们需要完成某个功能模块,但不知道使用功能模块的是哪个对象,通过协议,可以规定接收数据的对象通过哪个方法获得数据.

33-oc协议&amp;代理

协议基本概念 其他语言有接口的概念,接口就是一堆方法的声明没有实现. OC中没有接口的概念,OC中的接口就是协议. 协议Protocol是由一系列的方法声明组成的 书写协议的格式 格式: @protocol协议名称 <NSObject> // 方法声明列表 @end 一个类怎么遵循协议 类遵守协议格式: @interface类名 : 父类 <协议名称1, 协议名称2,…> @end 注意: 一个类可以遵守1个或多个协议 任何类只要遵守了Protocol,就相当于拥有了Protoco

OC基础 代理和协议

OC基础 代理和协议 1.协议 (1)oc语言中得协议:一组方法列表,不需要我们自己实现,由遵守协议的类来实现协议所定制的方法. (2)协议的使用步骤:制定协议-->遵守协议-->实现协议-->调用协议. (3)协议声明的关键字: (a)@required,必须实现,不实现的话在.m文件内会报警告. (b)@optional,可选实现,不实现的话在.m文件内也不会报警告. (4)协议和继承的区别: (a)相同之处:都可以规范统一类中的方法. (b)不同之处:继承的子类不需要再实现一遍父类