HTTP代理协议 HTTP/1.1的CONNECT方法

2018-03-04 10:15:33

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

  如果用户名和密码验证不通过。会返回一个407的状态码,状态表述是Unauthorized。表示没有权限访问代理服务器。HTTP/1.1 407 Unauthorized

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

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

  • 2019-12-17 11:56:05

    ffmpeg concat video and mix audio,ffmpeg简单快速的合并视频

    在ffmpeg中,官网给出两种连接媒体文件(音频、视频、etc..)的解决方案。 the concat "demuxer" the concat "protocol" 对比而言, demuxer更加灵活一些,需要媒体文件是属于相同的编解码器,但是可以属于不同的容器格式(mp3,wav, mp4, mov, etc..). 而protocol只适用于少数集中容器格式。

  • 2019-12-17 11:58:55

    FFmpeg文章目录

    seek ffmpeg # How to seek in mp4/mkv/ts/flv ffmpeg # flags &= ~AVSEEK_FLAG_BACKWARD ffmpeg # AVSEEK_FLAG concat ffmpeg # concat 连接两个视频 ffmpeg # -f concat -i mylist.txt ffmpeg # concat详解+音画同步策略 截图

  • 2019-12-18 23:26:00

    FFMPEG命令记录

    ffmpeg,拼接两个音频,剪切音频片段,多个音频混音,剪切一段MP4并转换成gif,改变音量大小,音频淡入淡出,音频格式处理

  • 2019-12-19 00:04:44

    ffmpeg concat video and mix audio

    在ffmpeg中,官网给出两种连接媒体文件(音频、视频、etc..)的解决方案。 the concat "demuxer" the concat "protocol" 对比而言, demuxer更加灵活一些,需要媒体文件是属于相同的编解码器,但是可以属于不同的容器格式(mp3,wav, mp4, mov, etc..). 而protocol只适用于少数集中容器格式。

  • 2019-12-19 00:16:30

    android采用FFmpeg实现音频混合与拼接剪切

    接触FFmpeg有一段时间了,它是音视频开发的开源库,几乎其他所有播放器、直播平台都基于FFmpeg进行二次开发。本篇文章来总结下采用FFmpeg进行音频处理:音频混合、音频剪切、音频拼接与音频转码。