标签:
坦白讲,没想好怎样的开头。辗转三年过去了。一切已经变化了许多,一切似乎从没有改变。
前段时间调研了一次代理相关的知识,简单整理一下分享之。如有错误,欢迎指正。
涉及
Proxy IP应用
原理/层级wireshark抓包分析
HTTP head: X-Forwarded-For/ Proxy-Connection/伪造 X-Forwarded-For/
以及常见的识别手段等几个方面。
Web 代理(proxy)服务器是网络的中间实体。代理位于客户端和服务器之间,扮演 “中间人”的角色,在各端点之间来回传送 HTTP 报文。本章介绍了所有与 HTTP 代理服务器有关的内容,为代理特性提供的特殊支持,以及使用代理服务器时会遇
到的一些棘手的问题。 -引用自《HTTP权威指南》
代理的应用想必大家都很熟悉了,不再过多的描述,简单上图达意。
哈,这个不说大家也明白,以前在学校宿舍里的小伙伴打游戏经常用,各种联通跨电信等等(OK,不发ad~)
当然这个非普通的HTTP代理可以做到的。
(前段时间一个词语叫做“不可描述”嗯,大家都懂得撒 :-)
当然代理还有很多功能,比如:局域网上网管理,好多年前的“绿@坝计划”
这里要说明的是WEB代理区别于网关:
代理连接的是两个或多个使用相同协议的应用程序,而网关连接的则是 两个或多个使用不同协议的端点。网关扮演的是“协议转换器”的角色,即使客户端和服务器使用的是不同的协议,客户端也可以通过它完成与服务器之间的事务处理。如发邮件时连接HTTP协议与SMTP协议。
代理分为两种:普通代理与隧道代理
-引用自《HTTP权威指南》
这里的代理既是服务器,又是客户端
-引用自《HTTP权威指南》
网关允许某客户端使用隧道之前,可以对其进行代理认证
(为了降低对隧道的滥用,网关应该只为特定的知名端口,比如 HTTPS 的端口 443)
这里分别拿 赶集的登录页面,58的主站页面做简单的测试。
捕获HTTP(以58主站为例)
捕获TLS(前身是SSL)(以赶集登录为例)
Follow TCP Steam
可以看出赶集用的是verisign的证书
WireShark很是强大,在各个平台上都有。网上的范例也不少,抓包的好助手之一。
既然说到这里,那么就复习一下三次握手吧。
(-。- ~~)
OK,简单图示回顾一下, 四次挥手这里就不再展开了。
另外 梳理一下
。
。
。
等等,还有很多,具体可以看官方的,很强大的说。
咦,好像跑的偏了,言归正传,继续回到本文的话题继续谈论一下代理IP HTTP Head相关的
|
REMOTE_ADDR |
HTTP_X_FORWARDED_FOR |
隐藏身份 |
识别难度 |
未使用代理 |
真实IP |
无 |
无 |
|
透明代理 |
代理IP |
真实IP |
无 |
易 |
匿名代理 |
代理IP |
代理IP |
是 |
易 |
欺诈代理 |
代理IP |
随机IP |
是 |
易 |
高匿名代理 |
代理IP |
无 |
是 |
难 |
这里简单做的一个表格汇总,显然,高匿的代理IP最具挑战,也是最常用的。
a de facto standard for identifying the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer |
X-Forwarded-For: client1, proxy1, proxy2X-Forwarded-For: 129.78.138.66, 129.78.64.103 |
https://en.wikipedia.org/wiki/X-Forwarded-For
https://tools.ietf.org/html/rfc7239
The X-Forwarded-For (XFF) HTTP header field was a common method for identifying the originating IP address of a client connecting to a web server through an HTTP proxy or load balancer. As of 2014 RFC 7239 standardized a new Forwarded header with similar purpose but more features compared to XFF.[1] An example of a Forwarded header syntax:
Forwarded: for=192.0.2.60; proto=http; by=203.0.113.43
简单理解就是一个后出来一个非标准但被业内默认常用的一个用来识别proxy的一个http haed。
也就是说 如果在直连的情况下是不会存在这个 参数的
当配置了反向代理 如 nginx(关于nginx,
网上有很多参考,自己也摘录过一些http://www.cnblogs.com/wenthink/p/nginxsetting.html)
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
简单伪造 :curl http://wenthink.com/headdemo -H ‘X-Forwarded-For: 192.168.8.8‘ -H ‘X-Real-IP: 192.168.8.8‘
Proxy-Connection[23] |
Implemented as a misunderstanding of the HTTP specifications. Common because of mistakes in implementations of early HTTP versions. Has exactly the same functionality as standard Connection field. |
Proxy-Connection: keep-alive |
这个字段同样也是常见的非标准要求字段,简而言之,有了这个字段可以判定为代理IP的可能性极大。
做一个简单的配置代理IP 这里不做展示
再次请出Wireshark
好吧 mask 有点儿多,其实就是验证下 多了一个Proxy—Connection这个请求头。
那么对于代理IP的识别又是怎样的呢?
网上也有很多通用的说法
常见的方式类型及方式:HTTP TCP UDP / Ping,telnet,nmap ,socket
这里简单画一个基本的流程图
OK
简单粗浅分析先到这里吧,后期或许继续补充,或许不再就这方面展开。
计划陆续写一些其他的。
参考资料:
《HTTP权威指南》
https://en.wikipedia.org/wiki/List_of_HTTP_header_fields
以及各路网友总结的这方面相关资料。
如果你觉得本文对您有所帮助,请点击一下推荐,感谢您的阅读!!
Proxy IP /TCP/HTTP_X_FORWARDED_FOR /Proxy-Connection 浅析
标签:
原文地址:http://www.cnblogs.com/wenthink/p/HTTTP_Proxy_TCP_Http_Headers_Check.html