您的当前位置:首页正文

如何判断一个ip是否为代理服务器

2021-03-16 来源:化拓教育网

有网友碰到这样的问题“如何判断一个ip是否为代理服务器”。小编为您整理了以下解决方案,希望对您有帮助:

解决方案1:

1、确认反爬虫策略是否正确
这是一个更大的问题。显然,所有的设置都是正确的,代码也是一样的,可以是访问失败,也可以是成功率很低,有些以前访问是成功的,突然有一天访问完全失败或失败率很高。很多朋友的第一个反应是代理IP质量不够,用http代理ip。
首先是用户电脑中安装了第三方查询软件或插件,导致非人工的、高频率的访问系统受到;
第二,在用户计算机所在的公共网络IP地址上存在其他计算机访问公共网络IP地址的行为,多次触发禁止访问规则,导致公共网络IP地址被禁止访问。
2、确认API提取的连接是否正常
能否正常提取代理IP,许多软件的第一步设定错误,完全不能提取IP,或者API的返回形式不符合要求,因此,如何判断API是否提取了链接呢?其实很简单。把API提取链接复制到浏览器栏回车打开,就能看到结果:1、无法打开网页,API出现问题;2、正常返回IP,检查格式是否符合要求;3、其它原因导致异常返回,如缺少参数,或提取过快等。

解决方案2:

。但是http协议里面有些规定。。如何判断客户端使用了代理服务器及其匿名级别 ?要判断客户端是否使用代理服务器,可以从客户端所发送的环境变量信息来判断,具体点就是看HTTP_VIA字段,如果这个字段设置了,说明客户端使用了代理服务器。匿名级别可以参考下表来判断。

public String getIpAddr(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return ip; }