你的代理ip是高匿名吗,如何分别?

【代理ip高匿名度判断】

谈论到代理IP,似乎总是会与匿名度挂钩。使用搜索引擎搜索「代理IP匿名度」,出来的答案清一色的基本是都是:高匿名、普匿名、透明代理之类的回答。当你搜索「为什么使用代理依旧被识别时?」,通常也是代理IP的匿名度来背锅。那么,究竟什么是匿名度?

什么是匿名度

其实无非就是在代理服务器转发请求的过程中是否给你添加了几个HTTP Header

常见的Header如下:

•REMOTE_ADDR :请求来源ip, 当直连时,即为客户端真实ip;当到达web服务器前最后经过的结点为代理服务器时,即为代理ip。

•HTTP_VIA:是一个通用首部,是由代理服务器添加的,适用于正向和反向代理,在请求和响应首部中均可出现。这个消息首部可以用来追踪消息转发情况,防止循环请求,以及识别在请求或响应传递链中消息发送者对于协议的支持能力。

•X_FORWAEDED_FOR:用于通过HTTP代理或负载平衡器识别连接到web服务器的客户端的原始IP地址的事实上的标准报头。当客户端和服务器之间的流量被拦截时,服务器访问日志仅包含代理或负载均衡器的 IP 地址。要查看客户端的原始 IP 地址,就要使用X-Forwarded-For 请求头

根据这几个header值的不同,又会将代理IP的匿名度分为几个等级

为什么需要这些Header?

你可能会疑惑,现在使用代理就是用来隐藏客户端IP的,为什么还要加一些头部信息呢?

原因是在以前网络条件还不发达的情况下,网络中常常充斥着大量代理服务器。

此时代理的作用并不是用来隐藏真实客户端IP地址,而是用作web高速缓存,加速互联网访问。

代理服务器的其他作用:你真的了解代理服务器吗

搭建代理服务器的软件有常见的squid,Prioxy,Varnish,Polipo,Tinyproxy等等。

由于这些软件并不是为了隐藏客户端IP而定制开发,所以运行这些软件的时候,默认会加上一些参数用于网络链路分析。

当前主流代理服务器

随着近几年大数据行业的蓬勃发展,爬虫、代理IP行业的发展也水涨船高。

可以发现传统的代理服务器软件(squid)无论是匿名还是高匿名代理,HTTP头部信息都会被修改。

目标网站很容易发现请求是否是通过代理服务器发送的,从而IP被目标网站风控,拉黑。

所以现在的需要付费的代理IP几乎都是自行开发的程序,主要是提供爬虫用户使用,目的是隐藏客户端IP。

为了专门隐藏客户端IP开发的代理程序对于用户发出的请求不会进行修改(有代理特征除外,下面会讲到),透传给目标网站,以此来模拟客户端的真实访问。

小心「proxy-」头部信息

如果是透传请求的代理服务器就是高匿名了吗?答案当然不是。

代理服务器还需要及时修改或者去除用户请求中的「Proxy-」相关代理特征字段,否则目标网站依然可以直接判定是否使用了代理IP,常见的代理特征如下:

1.Proxy-Authorization

用户使用用户名密码进行代理认证时会有此头部信息,代理服务器转发的时候需要去掉

2.Proxy-Connection: keep-alive

用户使用支持http/1.1协议的客户端时,通常会带上此字段表示支持长连接,代理服务器应该将此字段修改成 Connection: keep-alive

如何检测代理是否为高匿名

http://httpbin.kdlapi.com 是快代理为为工程师们搭建的httpbin服务。

其中 http://httpbin.kdlapi.com/headers 能够返回你的请求Header信息

携带用户名密码使用代理访问此API,查看返回的响应中是否有「Proxy-」开头的Header。

如果响应中是否有「Proxy-」开头的Header,则代理没有处理代理特征,目标网站轻而易举地知道你使用了代理IP。

如在Linux下使用curl命令挂代理访问 http://httpbin.kdlapi.com/headers:

❯ curl /headers -x proxy:[email protected]:8888

{ "headers":{"Accept":["*/*"], "Host":["httpbin.kdlapi.com"], "Proxy-Authorization":["Basic cHJveHk6cGFzc3dk"], // 代理没有处理 "User-Agent":["curl/7.64.1"], }

发现返回的字段中有Proxy-Authorization,表示代理服务器并没有处理请求中的代理特征,则此代理IP并不是匿名代理IP。

尽管目前代理IP提供商都会宣称自己的代理IP是完全高匿名的,但是小编实测部分提供商的代理IP在转发过程中依然会暴露代理特征,所以还是建议大家在使用前自己验证一下购买的代理IP到底是不是高匿名。