检查代理类型

时间:2012-02-09 13:08:20

标签: c# .net proxy network-programming

我想确定给定IP地址的代理是透明的还是匿名的。透明代理连接到具有您的真实IP的网站,如HTTP_X_FORWARDED_FOR或HTTP_VIA。我想检查这些代理,但我找到的所有解决方案都是为了在服务器端工作,以测试传入连接的代理性。我的计划是通过代理向示例页面发出Web请求。如何检查代理发送的标头,最好使用WebRequest类?

编辑:那么有一些免费的网络API可以让我这样做吗?我并不热衷于在我自己的小型服务器上设置一个脚本,这个脚本会被请求轰炸。

3 个答案:

答案 0 :(得分:1)

只是你不需要那个标题。我可以通过向任何get-my-IP站点发送请求来检查代理的透明度,如果它返回我的IP则它是透明的。如果没有,那么代理是匿名的。所以步骤是:

  1. 向任何没有代理的get-my-IP网站发送请求

  2. 从响应中提取IP作为我的本地IP地址

  3. 使用代理

  4. 向任何get-my-IP网站发送新请求
  5. 从响应中提取IP并将其与我的本地IP进行比较(步骤2)

  6. if(LocalIp==ProxyIp)然后代理是透明的,否则它是匿名的

答案 1 :(得分:0)

所有解决方案都是服务器端的原因是您所谈论的标头仅从代理传递到服务器,并且永远不会在响应中再次返回客户端。

换句话说,如果您计划检查从代理服务器到服务器的请求中的HTTP标头,您需要检查服务器端(如您找到的解决方案)或在响应中将其主动传递回来给客户检查。

无论哪种方式,您都不能只是向随机页面发出请求并检查服务器获取的标头,服务器需要以某种方式参与。

答案 2 :(得分:0)

这在技术上是不可能的,因为客户端只看到代理返回给客户端的内容 - 代理可以在与目标服务器通信时做任何想做的事情,并转换您的请求和服务器的答案,无论如何它想要...

要真正了解代理的功能,您需要查看服务器获取的内容并在不受代理干​​扰的情况下发回...