HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)

摘要:
HTTP/HTTPS/SOCKS代理是指客户端连接到代理服务器的协议。例如,服务器支持代理HTTP协议,称为HTTP代理服务器。HTTPS协议可以使用SOCKS代理(即,HTTP、HTTPS协议和代理服务器可以使用SOCKSprotocol)。例如,您在这里配置的是让HTTP协议通过HTTPS代理服务器(这里的HTTPS代理服务器只支持代理HTTPS,使用HTTP协议将其直接转发到相应的代理服务器)。

HTTP/HTTPS/SOCKS 代理指的是客户端连接代理服务器的协议,指客户端和代理服务器之间交互的协议。

如服务器支持代理HTTP协议就叫HTTP代理服务器,支持代理SOCKS协议就叫SOCKS代理服务器。如代理服务器同时支持代理HTTP/SOCKS协议,则既可以叫HTTP代理服务器,也可以叫SOCKS服务器。

补充:SOCKS协议工作在比HTTP、HTTPS更低的层次,所以HTTP协议,HTTPS协议可以使用SOCKS代理(即HTTP、HTTPS协议和代理服务器之间可以采用SOCKS协议),但反过来,SOCKS协议就不能通过HTTP/HTTPS来代理了。

注意和IE浏览器中代理(即系统代理)设置是不一样的概念!

HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)第1张

这里IE的代理意思是,配置哪种协议走哪个代理服务器(注意并不是什么协议代理服务器,IE仅支持HTTP代理)。比如你这里配的是让HTTP协议走HTTPS代理服务器(这里的HTTPS代理服务器指仅支持代理HTTPS,不支持代理其他协议如HTTP),那么HTTP协议将不能够被代理成功。

其实,IE的代理设置都只支持HTTP代理的。上图中无论怎么设置,都是使用HTTP协议直接转发到对应的代理服务器,也就是代理服务器必须是支持代理HTTP协议的服务器(代理服务器支持其他协议比如HTTPS也是多余的,并不会使用HTTPS代理)。这里大家可能会有疑问,那HTTP代理服务器是如何可以代理HTTPS协议的呢?其实是用了HTTP隧道(HTTP tunnel)(感兴趣请自己查阅相关资料),客户端和HTTP代理服务器之间并没有进行HTTPS的握手过程。

上面说了,IE代理仅支持HTTP代理,谷歌浏览器Chrome代理配置也只能是配置IE代理,也就是只能使用HTTP代理了。那比如我想使用HTTPS代理怎么办(客户端和HTTPS代理服务器之间采用HTTPS协议)?

可以使用插件Proxy SwithchyOmega:
HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)第2张

“网址协议”就是IE代理设置里的“类型”,和IE代理相比,多了个“代理协议”选项,即什么协议走什么代理选项。

比如可配置HTTP/HTTPS协议走SOCKS5协议代理。其实这插件也是调用了chromium提供的接口(https://www.chromium.org/developers/design-documents/network-stack/socks-proxy):
HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)第3张

可看出FTP协议通过SOCKS协议代理还没有实现。。

最后说下ss/ ss(R)的原理:

ss的运行原理与其他代理工具基本相同,使用特定的中转服务器完成数据传输。在服务器端部署完成后,用户需要按照指定的密码、加密方式和端口,使用客户端软件与其连接。在成功连接到服务器后,客户端会在用户的电脑上构建一个本地Socks5代理。浏览网络时,网络流量会被分到本地socks5代理,客户端将其加密之后发送到服务器,服务器以同样的加密方式将流量回传给客户端,以此实现代理上网。

有人会问,ss(R)是Socks5代理,但我上面说了IE代理(不安装Proxy SwithchyOmega情况下)只支持HTTP代理,为什么也可以访问google呢?

其实ss(R)默认在1080端口开启了Socks5代理,但是它为了兼容HTTP代理模式,会使用ss_privoxy.exe开启了一个HTTP代理(随机端口,返回拒绝则默认8123端口)。

HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)第4张

不仅如此,ss(R)在1080端口也支持HTTP代理。

我们知道,IE的代理设置是仅支持HTTP代理的。也正是因为ss(R)支持HTTP代理方式,才能使IE以及一些其他不支持Socks5代理(但支持HTTP代理)的软件进行代理。

浏览器一般会自动启用系统代理,而其它软件则需要自身支持HTTP代理或Socks5代理,而且一般需要进行手动配置才可以进行代理。

补充:分别使用HTTP协议和SOCKS5协议访问ss本地Windows客户端情况(注:事先要下载curl小工具):
HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)第5张

 可看出,HTTPS协议使用HTTP代理是通过了HTTP隧道

HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)第6张

注:

socks5 和 socks5h 的区别仅用于 curl。在 curl 中,socks5 会使用本地DNS,socks5h 会使用代理提供的远程DNS。

在其它软件中,socks5h 基本不起作用,使用 socks5 即可。一旦设置了代理,多数时候会采用远程DNS。

 
HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)第7张

 可见,因为ss本地Windows客户端(相当于本地代理服务器)不支持HTTPS协议,因此不会响应Client hello

免责声明:文章转载自《HTTP、HTTPS、SOCKS代理的概念(到底是什么意思?)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇R语言学习——R读取txt、csv、xls和xlsx格式文件使用c语言和GMP库实现伪随机算法笔记下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用WCF传输DataTable:DataTable和Xml格式的字符串相互转换(C#)

背景:项目中要用到客户端向服务端传数据,使用WCF,绑定webHttpBinding,做了一个小例子。 业务逻辑简介:客户端在a表中添加了几条数据,从SQL Server数据库直接取出新添加的数据(DataTable格式的数据),传递给服务端,服务端有着和客户端相同的数据库结构,将收到的数据也同样添加到自己的a表中。除了添加数据,还有可能进行修改、删除等,...

NFS 共享存储

部署# 服务端# 安装 NFS 服务 #执行以下命令安装 NFS 服务, #apt 会自动安装 nfs-common、rpcbind 等软件包 sudoaptinstall nfs-kernel-server 创建共享目录 在服务器端创建 /nfs 目录。 编写配置文件 vim /etc/exports #[任意主机所有权限] /nfs...

WCF安全:通过 扩展实现用户名密码认证

  在webSservice时代,可以通过SOAPHEADER的方式很容易将用户名、密码附加到SOAP header消息头上,用户客户端对调用客户端身份的验证。在WCF 时代,也可以通过OperationContext.Current.IncomingMessageHeaders的方式将用户名、密码附加到SOAP消息中。但是这种方式实现起来有个缺点;那就是...

Unity你用过哪些设计模式?你熟悉的设计模式有哪几种呢?

以前写过几篇设计模式的详细解释,今天在这里不详细介绍,有兴趣了解的可以去看前几篇随笔,今天就简单的介绍我们常用的设计模式. (1)工厂模式 简单工厂模式解决的问题是如何去实例化一个合适的对象. 简单工厂模式的核心思想就是:有一个专门的类来负责实例过程,范式出现大量产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建,比如说写技能是一系列类,那么...

IE6中location不跳转问题

前天一我遇到个看似很诡异的问题,就是<a href="javascript:void(0);" onclick="window.location.href=url"></a>在IE6下面没反应,不跳转到onclik事件中的"window.location.href"。 当时我们在网上找了篇文章很快就解决了,但是文章中没有说明具体原因在...

服务器端Session和客户端Session(和Cookie区别)

Session其实分为客户端Session和服务器端Session。 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在 HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户...