`
jspengxue
  • 浏览: 180548 次
  • 性别: 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就好办了,接下去的事情~~~罚款!!!
分享到:
评论

相关推荐

    koa-proxy:koa的代理中间件

    koa-proxy已转移到甲氧基 Koa代理中间件安装$ npm install koa-proxy -S用法当您请求,它将获取并返回。 var koa = require ( 'koa' ) ;var proxy = require ( 'koa-proxy' ) ;var app = koa ( ) ;app . use ( proxy...

    ngx_http_proxy_connect_module.zip

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Connection "Upgrade"; proxy_http_version 1.1; proxy_method CONNECT; } } ``` 在这个配置中,Nginx监听8080端口,当接收到...

    php获取不到自定义header参数原因详解

    例如,在Nginx配置中,确保`proxy_set_header`指令正确无误,并且服务器配置没有阻止自定义Header的传递。 总之,理解PHP处理HTTP头的方式以及`$_SERVER`数组的工作原理,是解决PHP获取自定义Header问题的关键。在...

    教你怎么用Nginx往request的header中添加新字段

    若要在向上游服务器转发请求时添加或修改请求头,我们需要使用`proxy_set_header`指令。这通常在Nginx作为反向代理时使用。 例如,假设我们想在请求头中添加一个名为`X-Api-Version`的字段,其值为`v1`,可以在...

    使用angel proxy 的 客户端脚本(目前只支持php)

    'header' =&gt; "Authorization: Basic " . base64_encode('username:password'), ] ]); $response = file_get_contents('http://target.com', false, $context); ``` 在实际应用中,可能还需要处理网络错误、超时、...

    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

    nginx location中多个if里面proxy_pass的方法

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; proxy_http_version 1.1; proxy_set_header Connection ""; ...

    nginx + header 转发 灰度测试

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; if ( $http_room = 'v2') { rewrite ^/testng/(.*)$ /$1 break; proxy_pass http://localhost:9002; } if ( $http_room != 'v2'){ rewrite ^...

    nginx-1.25.1(ngx-http-proxy-connect-module插件)windows版本

    proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_module; } } } ``` 这里,`proxy_...

    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(); ...

    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 ...

    ngx-http-proxy-connect-module-master.tar.gz

    proxy_set_header X-Real-IP $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect allow all; } } } ``` 在这个配置中...

    ngx-http-proxy-connect-module-master

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 配置 ngx_http_proxy_connect_module location / { if ($request_method = CONNECT) { proxy_pass http://$host:$proxy_port; break; } }...

    nginx config reverse proxy for windows.pdf

    proxy_set_header Connection "upgrade"; } ``` 上述配置将客户端的请求转发到 mnif.cn 域名的 8083 端口,实现 WebSocket + SSL 访问。 在配置完成后,需要重启 Nginx 服务,以便生效新的配置。 反向代理的作用...

    Nginx正向代理http和https.md

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_cache my_cache; proxy_cache_key "$scheme$...

    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...

    阿里云CDN加速配置

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://localhost:8081; root /data/child/Activity; } location /huodong { proxy_next_upstream ...

    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_...

Global site tag (gtag.js) - Google Analytics