`
jspengxue
  • 浏览: 178255 次
  • 性别: Icon_minigender_1
  • 来自: 天堂和地狱的中间
社区版块
存档分类
最新评论

proxy header

阅读更多
通常,一般的浏览器(IE or Mozilla)都不会提交象偶上面这么简单的HTTP请求的,它还会把一些有关信息包括进去,比如浏览器的版本以及操作系统版本,(User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0),这样HTTP服务器就可以得到更多的客户端的信息,偶们监听这个HTTP会话的话,也可以看到这些信息。

HTTP客户端(浏览器)通过HTTP Proxy来访问某个HTTP服务器的过程大概如下:

       HTTP请求->                     HTTP请求->
HTTP Client ------------------ HTTP Proxy (更改某些HTTP头部信息) ------------------- HTTP Server
       <-HTTP应答                     <-HTTP应答

HTTP Proxy基本上会做一个中间人的位置,以自己的身份向HTTP服务器发起请求,这个HTTP请求的主要内容来自HTTP Client发给HTTP Proxy的请求,但是某些细节可能会有改变,HTTP Proxy甚至会加一些信息进去(怎么样,是不是眼前一亮啊?这就是偶们的机会了)。

OK,确定我们的方向,只要发现某个HTTP请求中有HTTP Proxy加进去的信息,那么我们就可以判断某个IP是HTTP Proxy了,甚至可以判断出真正提交这个HTTP请求的非法用户的真实IP。
HTTP Proxy何其多啊,xxbin熟悉的只有Linux/UNIX下著名了squid和M$ ISA Server(原来的M$ Proxy)中带的HTTP Proxy,偶只能针对这两个HTTP Proxy来讨论,下面的方法,对其它的HTTP Proxy是否适应,偶没有条件测试不了。  而且下面所描述的协议的细节,并不是RFC中的规范,仅仅是针对某几个产品的一些特性。   (不过HTTP Proxy,这两大巨头是占了相当市场份额的,还算是有点代表性的说)

通常,HTTP Proxy会更改或者添加以下的HTTP请求变量:
REMOTE_ADDR
HTTP_VIA
HTTP_X_FORWARDED_FOR


没有使用HTTP Proxy的时候,这几个变量的值应该如下:
REMOTE_ADDR: HTTP Client(浏览器)所在机器的IP
HTTP_VIA: 无定义,也就是说不会在HTTP请求中出现
HTTP_X_FORWARDED_FOR: 无定义,同上


当你使用了普通配置的HTTP Proxy的时候,这几个变量就变成下面的样子了:
REMOTE_ADDR: HTTP Proxy's IP (不变的话就容易判断了,呵呵)
HTTP_VIA: HTTP Proxy's IP or HTTP Proxy' ServerName或HTTP协议版本号或HTTP Proxy版本信息(有什么办法呢,这可没有RFC定义的说,不同的厂商做出来的HTTP Proxy这个字段的东东是不一样的说)
HTTP_X_FORWARDED_FOR: HTTP Client(浏览器)所在机器的IP (Squid使用,ISA不支持此字段)
其实分析到这里,偶们的目的已经可以实现了。
只要发现某个HTTP请求头部带有HTTP_VIA或HTTP_X_FORWARDED_FOR,那么这个发起HTTP请求的IP必定是个HTTP Proxy。OK,知道IP就好办了,接下去的事情~~~罚款!!!
分享到:
评论

相关推荐

    Nginx代理时header头中带”_”信息丢失问题的解决

    前言 开发网关项目时,在请求时往请求头header中放入... proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Nginx-Proxy true; add_header Pro

    rest-proxy:RestProxy

    休息代理 简单的休息代理 例子 &lt;?...require_once __DIR__ .... use Symfony\Component\HttpFoundation\Request;...use RestProxy\RestProxy;...foreach($proxy-&gt;getHeaders() as $header) { header($header); } echo $p

    EventBus代理生成vertx-service-proxy.zip

    vertx-service-proxy 是 EventBus 代理生成。示例:// Assume database service is already deployed somewhere.... // Save some data in the database JsonObject message = new JsonObject(); ...

    nginx升级过程文档.docx

    因为系统需要websocket通信,但是服务器的nginx版本太低,无法解析websoket请求,需要升级。 升级后nginx主要配置为location / { ... #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    HTTP协议Header详解.html

    HTTP协议Header详解是html帮助格式的,方便查询, 通过HTTP协议RFC2616整理的, 目录: 头域定义 2 1 Accept 2 2 Accept-Charset 4 3 Accept-Encoding 5 4 Accept-Language 6 5 Accept-Range 7 6 Age 7 7 Allow 8 8 ...

    urllib2使用代理ip和header打开网页

    urllib2使用代理ip和改变header打开网页,proxy和headers。

    nginx 反向代理软件

    # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Scheme $scheme; # proxy_pass http://192.168.2.37; #} location / { proxy...

    flex跨域上传

    proxy_set_header X-Forwarded-For $remote_addr; proxy_pass http://localhost:8080/zwh/; } } server { listen 80; server_name test1.zwh.com; location / { proxy_set_header Host $host; proxy_...

    Rock Proxy

    因为原始数据包中包含所有的数据,所以不止可以查看Cookies,还可以查看Header,数据主体等。 6、支持GET,POST和CONNECT三种连接。 注意,因为这是为调试而设计的Proxy,所以不支持缓冲等高级功能:)

    Reverse-Proxy-for-Google

    Google反向代理[Nginx]可配置的Nginx com代理反Google产品,可单独... proxy_set_header Host www.google.com; proxy_set_header Referer https://www.google.com; proxy_set_header User-Agent $http_user_agent ;

    nginx https环境搭建详细教程

    nginx https环境搭建详细教程,生产环境亲测,图文详细教程

    让iis记录nginx反向代理的真实ip

    nginx配置示例: 代码如下:server{ location { … proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; … }} 二、在iis站点上安装isapi filter 在f5的开发论坛上找到的,按开发者的话说,是...

    详解proxy_pass根据path路径转发时的”/”问题记录

    在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的...proxy_set_header Host js.test.com; proxy_pass http://js.test.com/; } 如上面的配置,如果请求的url是http://servername/wangshibo/tes

    saml-auth-proxy:提供用于后端Web服务的SAML SP身份验证代理

    Comma separated list of attribute=header pairs mapping SAML IdP response attributes to forwarded request header (env SAML_PROXY_ATTRIBUTE_HEADER_MAPPINGS) -attribute-header-wildcard Maps

    HTTP-Proxy-Servlet:Smiley的HTTP代理实现为Java Servlet

    它是反向代理,实际上不是转发代理,尽管Servlet的模板形式可能会使这条线模糊。 这几乎不是第一个代理,为什么我要编写它,为什么还要使用它呢? 很简单-单一源文件实现 经过测试-确信它可以正常工作 ...

    local-cors-proxy:简单的代理绕过CORS问题

    构建该模块是为了解决出现此错误的问题: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '...

    Node 使用express-http-proxy 做api网关的实现

    var proxy = require('express-http-proxy') var app = express(); app.all('*', function (req, res, next) { res.header("Access-Control-Allow-Origin", req.headers.origin); res.header("Access-Control-...

    node-header-proxy:附加标头的 NodeJS 代理。 用于模拟服务器的标头

    NodeJS 中的头附加代理 此 nodeJS 应用程序将代理从本地主机上的一个端口到给定主机名/端口的流量,但会在此过程中添加一系列标头。 您可以通过在headers目录中创建带有您想要附加的内容的文件来控制这些标题。...

    selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)

    主要介绍了selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    toproxy:高性能简单龙卷风http代理

    如果是底层的socket来写,我首先需要解析你的各种各样的header请求,然后还要考虑多任务的模块,或 prefork 或 异步模式, 这都是开发的成本。 我这里是用tornado这异步框架,本身解决了各个流程的堵塞问题,然又用...

Global site tag (gtag.js) - Google Analytics