我们平时使用HTTP协议无非就是GET、POST这些方法,但是HTTP的内容远不止那些。今天就来说说HTTP代理使用的CONNECT。这个不是在网页开发上用的,如果没兴趣就跳过吧。
  APACHE只是作为网页的服务器被使用的,不会支持这个方法。如果要使用它必须在服务器上安装相应的软件。这样的软件很多,百度一下HTTP代理服务器就可以找到一大把。
  CONNECT这个方法的作用就是把服务器作为跳板,让服务器代替用户去访问其它网页,之后把数据原原本本的返回给用户。这样用户就可以访问到一些只有服务器上才能访问到的网站了,这就是HTTP代理。说到代理,我想各位在党的旗帜下成长的同学都不会陌生吧。我们使用的网络被称为天朝局域网,它离Internet还有很长的一段路要走。所以,我们就必须越过重重坎坷去摸一摸这个世界本来的样子。哎呀,不小心又扯了一下蛋。下面来说说这个CONNECT方法的用法。
  CONNECT方法是需要使用TCP直接去连接的,所以不适合在网页开发中使用,不过网页开发中也用不到这玩意儿。要是使用CONNECT方法,首先要让服务器监听一个端口来接收CONNECT方法的请求。这个是服务器软件做的事情,我们只要配置好它就可以了,除非你闲着无聊想自己实现一个这样的服务器。在服务器监听了端口以后就是客户端的请求,我们必须告诉代理服务器我们想要访问哪个Internet服务器。假如我想通过代理访问这个博客(www.web-tinker.com),我就需要建立一个TCP连接,连接到服务器监听的那个端口,然后给服务器发送一个HTTP头。下面就是这个HTTP头的内容: Host:

CONNECT www.web-tinker.com:80 HTTP/1.1
 Host: www.web-tinker.com:80
 Proxy-Connection: Keep-Alive
 Proxy-Authorization: Basic *
 Content-Length: 0


  所有的HTTP头都是类似的,第一行是方法名、主要参数、HTTP版本。接着一行一个参数,最后用两个换行来结束。这个HTTP头其实也没什么好介绍的,唯一一个重点的地方就是星号的部分,这个地方应该填写验证的用户名和密码。而且,用户名和密码也是有固定格式的。要把用户名和密码用冒号连接起来,再经过BASE64的编码后才可以使用。假如用户名是abc密码是123,那么星号的地方就应该换上YWJjOjEyMw==,也就是abc:123经过BASE64编码的结果。
  发送完这个请求之后,就是服务器端响应请求了。如果用户名和密码验证通过,就会返回一个状态码为200的响应信息。虽然状态码是200,但是这个状态描述不是OK,而是Connection Established。

  验证失败的情况有时候还会带上一堆HTML,这是有些服务器为了让网页上在连接失败是显示用的,如果不是通过浏览器来连接的话无视就好了。无论验证成功还是验证失败,这些服务器返回的信息在不同的服务器软件上会有一些差异。比如有些服务器软件返回这些代码会使用HTTP/1.0,有些则会在后面加上个代表服务器版本的字段。这些信息都无所谓,对于服务器返回的数据,我们关键是看状态码。
  验证通过之后,我们就可以做普通的HTTP操作了。完全可以把现在的代理服务器看作是请求连接的Internet服务器,也就是说可以像直接访问普通的服务器一样,使用GET、POST等方法来请求Internet服务器上的页面了。我们在发送CONNECT请求的时候就已经告诉了服务器我们需要访问的Internet服务器,上面我用了这个博客的网址。现在我们要访问这个博客的主页就可以发送一个简单的GET请求。

Host: www.web-tinker.com
Content-Length:

  这个就是普通的GET请求的操作了,我就不多说了,这样CONNECT方法的操作就完成了。假如哪天这个博客被墙了,就可以通过这个方式来访问。但是道高一尺魔高一丈,天朝的和谐技术已经不仅仅在与IP屏蔽上了。如果使用HTTP代理访问youtube这种超级和谐的网站就会被拦截下来,毕竟HTTP是明文传输的,不仅是域名,只要网站中有和谐字眼的都会被拦截。所以,这个HTTP代理只能访问一些被屏蔽了IP,但是没有被和谐的太严重的网站。如果需要逃过天朝的网络监视就必须使用加密的连接方式,比如SOCK5代理或者加密的VPN。总之,注意和谐吧。

FROM:http://blog.csdn.net/kobejayandy/article/details/24606521

HTTP代理协议 HTTP/1.1的CONNECT方法的更多相关文章

  1. HTTP——代理协议 HTTP/1.1的CONNECT方法

    我们平时使用HTTP协议无非就是GET.POST这些方法,但是HTTP的内容远不止那些.今天就来说说HTTP代理使用的CONNECT.这个不是在网页开发上用的,如果没兴趣就跳过吧. APACHE只是作 ...

  2. React系列——react-redux之connect方法解析

      connect简介 前方高能预警,有耐心才能看完文章!! react-redux仅有2个API,Provider和connect,Provider提供的是一个顶层容器的作用,实现store的上下文 ...

  3. react-redux的connect()方法

    容器组件使用 connect() 方法连接 Redux 我们用 react-redux 提供的 connect() 方法将“笨拙”的 Counter 转化成容器组件.connect() 允许你从 Re ...

  4. React 实践心得:react-redux 之 connect 方法详解

    Redux 是「React 全家桶」中极为重要的一员,它试图为 React 应用提供「可预测化的状态管理」机制. Redux 本身足够简单,除了 React,它还能够支持其他界面框架.所以如果要将 R ...

  5. Swift - 创建代理协议实现页面间参数传递和方法调用

    在开发中,经常需要用到协议代理模式.比如,进入编辑页面修改数据后,将新数据回传到主界面. 下面通过一个样例来说明协议代理模式,功能如下: 1,主页面有一个标签和一个修改按钮,点击修改按钮会跳转到编辑页 ...

  6. iOS 防止抓包

    原文链接:https://www.jianshu.com/p/1ab83d726d3f 现在 APP 开发,数据的保密性越来越受重视,保密性高才不会让数据轻易被泄露,同时保护到用户和公司的利益.如何做 ...

  7. [转帖]HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明

    HTTP请求方法:GET.HEAD.POST.PUT.DELETE.CONNECT.OPTIONS.TRACE 说明 平时的Rest开发,用到的都是GET,POST,PUT,DELETE类型的请求. ...

  8. HTTP请求方法:GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE 说明

    平时的Rest开发,用到的都是GET,POST,PUT,DELETE类型的请求. 但Rest支持的请求类型不止前面4种,还有其他几种. 下面部分转自: https://www.html.cn/arch ...

  9. HTTP Method详细解读(`GET` `HEAD` `POST` `OPTIONS` `PUT` `DELETE` `TRACE` `CONNECT`)

    前言 HTTP Method的历史: HTTP 0.9 这个版本只有GET方法 HTTP 1.0 这个版本有GET HEAD POST这三个方法 HTTP 1.1 这个版本是当前版本,包含GET HE ...

随机推荐

  1. 线程模式HS/HA和L/F的区别, HS/HA的实现原理图

    线程池模式一般分为两种:L/F领导者与跟随者模式.HS/HA半同步/半异步模式. HS/HA 半同步/ 半异步模式 :分为三层,同步层.队列层.异步层,又称为生产者消费者模式,主线程处理I/O事件并解 ...

  2. Java中的分代垃圾回收策略

    一.分代GC的理论基础 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大 ...

  3. java应用uploadify 3.2丢失session

    java应用uploadify 3.2丢失session http://c-bai.iteye.com/blog/1829269 uploadify上传用的是一个flash插件. flash中有个bu ...

  4. TextBox 绑定到DataTable某一列属性上

    将TextBox绑定到DataTable某一列属性上 DataTable dt = GetDataTable() textBox1.DataBindings.Add("Text", ...

  5. BroadcastReceiver

    BroadcastReceiver 广播接受者 Android中, Broadcast是一种数据传递的方式/通信方式. Brodadcast 是Android 系统组件之一 广播的特性 1. 由一个发 ...

  6. html实现层叠加

    <div id="canvasesdiv" style="position:relative; width:400px; height:300px"> ...

  7. WPF 概述

    WPF 全称是:Windows Presentation Foundation,直译为Windows表示基础.WPF是专门为GUI(Graphic User Interface)程序开发设计的. 在过 ...

  8. 提取图像(tif)中水体的矢量数据(shp)研究

    方法一:1、利用envi打开tif数据,原投影信息为beijing54.envi中没有这个投影。这里选择投影信息(WGS-84)选取水体roi——进行监督分类。这里可以对分类后进行处理(消除文字等干扰 ...

  9. "!x++" 我之见解

    "!x++"之说,各人见解不同,但真理只有一个.我只尝试着说出一种见解,未知真相. 何如? "!x++"等价于"!(x++)". 理论分析 ...

  10. Xcode8 - apploader 上传失败 - ERROR ITMS-90168: "The binary you uploaded was invalid."

    背景:最近电脑升级了系统macOS Sierra 10.12.1:Xcode 也升级到了Version 8.1 (8B62). 问题:使用Application Loader3.0 上传应用到iTun ...