眼尖的朋友可能已经发现了,本站有一个WebProxy服务
WebProxy,说白了,就是一个代理程序。不过只能在浏览器内使用而已
这种代理的常见的实现思路是:使用PHP分析用户请求的URL,Port,Method等信息,然后使用PHP的CURL模块,向目标网站发送请求,获取到信息后再设置相应的Content-Type,并输出所获取到的内容。
此类代理服务对于咱们而言,最常用的用途是:上谷歌
咱都知道,Google上有很多东西,但是被GFW给屏蔽掉了。在此我不去评判谁对谁错,我只想说的是:
信息有好有坏,需要辩证看待
引子
回到正题,要更好地理解它,不得不提到的是两种东西:HTTP代理和HTTPS代理。这两玩意看似只是拼写上有一个S的区别,实际上却并非仅仅如此。这个S,指的是:
…..啊,放错图了,S指的是这个:
换句话说,正是因为HTTP需要有防止中间人攻击和信息保密之类的种种种种要求,才诞生了HTTPS。也正因为如此,HTTP代理和HTTPS代理的工作模式,就有了很大的区别。
HTTP代理
先以下从HTTP代理说起。下面是一个HTTP请求头示例:
数据发往www.hahaha.com (IP: 123.123.123.123)
GET /index.html HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.hahaha.com
Accept-Language: zh-CN
正常情况下,这个请求会被直接发往目标服务器,然后目标服务器就会返回对应的内容。但是,如果客户端和服务器之间多出来个代理服务器,那么情况就会变成这样:
数据发往代理服务器 (IP: 234.234.234.234)
GET /index.html HTTP/1.1
User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.hahaha.com
Accept-Language: zh-CN
是不是,没有看出什么区别?
这就是HTTP代理的工作原理:根据HTTP请求头中的Host项,判断客户端要访问的目标网站,再将请求信息发到目标网站。目标网站作出回应后,代理服务器再将回应的信息返回给客户端。
HTTPS代理
HTTPS代理,生来就是为了防止中间人攻击的
因此,HTTP代理那一套就行不通了,因为如果代理服务器能看到通信内容,那么HTTPS的意义几乎是没有了。
为了解决这个问题,HTTPS代理使用了一个很有趣也很好理解的方法。
我们都知道,和GET,POST之类的一样,HTTP/1.1中有一个请求方法叫CONNECT。
在 HTTP 协议中,
CONNECT
*方法可以开启一个客户端与所请求资源之间的双向沟通的通道。它可以用来创建隧道(Tunnel)
听起来有点费解是不是?没关系,我们来看这个例子:
浏览器访问HTTPS网站时,如果检测到需要使用代理服务器,那么首先,会和代理服务器建立TCP连接,然后发送:
CONNECT www.hahaha.com:443 HTTP/1.1
此时,收到请求的代理服务器会和目标网站www.hahaha.com
建立TCP连接。连接建立之后,代理服务器会向浏览器(注意不是目标网站向代理服务器,更不是目标网站向浏览器)发送:
HTTP/1.1 200 Connection Established
这个信息说明,代理服务器和两端的TCP隧道已经建立。接下来的时间里,代理服务器只是负责无脑转发浏览器和目标网站之间的流量,至于通信内容,它就管不着了。
也正因为如此,传输内容是不是合乎HTTP协议,也不在代理服务器考虑的范围内。换句话说,只要是TCP协议能传输的内容,都可以使用HTTPS代理服务器进行代理。
WebProxy
WebProxy,从它的实现方式来看,介于HTTP代理和HTTPS代理之间。既类似于HTTP代理的需要根据HTTP请求的内容来判断发往哪个服务器,又类似于HTTPS代理的可以保证客户端到代理服务器,代理服务器到目标网站的加密通信。
这种东西最大的特点,就是只能在浏览器内使用。除了单纯地获取网页内容之外,它还做了下面的事情:
- 修改请求内容中所有的链接,指向WebProxy(以梧桐星光下的WebProxy为例,会将
https://www.hahaha.com
修改为https://ink.mfwt.xyz/proxy/index.php/https://www.hahaha.com
),以保证接下来的请求都会通过WebProxy进行。 - 根据数据内容,确定Content-Type
写在最后
大体而言,这就是梧桐对于WebProxy的一些见解,如有不妥的地方,请反馈给梧桐:[email protected]
/ [email protected]
全文完