您的位置:首页 >新闻资讯 > 正文

如何从HTTP协议中获取IP地址?

来源:互联网 作者:admin 时间:2019-10-08 15:42:11

  如何从HTTP协议中获取客户端的IP?ET代理为大家带来这个操作教程,下面让我们看看代码步骤是怎么样的。


如何从HTTP协议中获取IP地址


  详细代码如下:


  private static Logger log = Logger.getLogger(InternetProtocol.class);

  /**

  * 构造函数.

  */

  private InternetProtocol() {

  }

  /**

  * 获取客户端IP地址.<br>

  * 支持多级反向代理

  *

  * @param request

  * HttpServletRequest

  * @return 客户端真实IP地址

  */

  public static String getRemoteAddr(final HttpServletRequest request) {

  try{

  String remoteAddr = request.getHeader("X-Forwarded-For");

  // 如果通过多级反向代理,X-Forwarded-For的值不止一个,而是一串用逗号分隔的IP值,此时取X-Forwarded-For中第一个非unknown的有效IP字符串

  if (isEffective(remoteAddr) && (remoteAddr.indexOf(",") > -1)) {

  String[] array = remoteAddr.split(",");

  for (String element : array) {

  if (isEffective(element)) {

  remoteAddr = element;

  break;

  }

  }

  }

  if (!isEffective(remoteAddr)) {

  remoteAddr = request.getHeader("X-Real-IP");

  }

  if (!isEffective(remoteAddr)) {

  remoteAddr = request.getRemoteAddr();

  }

  return remoteAddr;

  }catch(Exception e){

  log.error("get romote ip error,error message:"+e.getMessage());

  return "";

  }

  }

  /**

  * 获取客户端源端口

  * @param request

  * @return

  */

  public static Long getRemotePort(final HttpServletRequest request){

  try{

  String port = request.getHeader("remote-port");

  if( StringUtil.isNotEmptyString(port )) {

  try{

  return Long.parseLong(port);

  }catch(NumberFormatException ex){

  log.error("convert port to long error , port: "+port);

  return 0l;

  }

  }else{

  return 0l;

  }

  }catch(Exception e){

  log.error("get romote port error,error message:"+e.getMessage());

  return 0l;

  }

  }

  /**

  * 远程地址是否有效.

  *

  * @param remoteAddr

  * 远程地址

  * @return true代表远程地址有效,false代表远程地址无效

  */

  private static boolean isEffective(final String remoteAddr) {

  boolean isEffective = false;

  if ((null != remoteAddr) && (!"".equals(remoteAddr.trim()))

  && (!"unknown".equalsIgnoreCase(remoteAddr.trim()))) {

  isEffective = true;

  }

  return isEffective;

  }


  以上就是如何实现获得客户端IP的操作流程。ET代理是国内优质的动态IP代理服务商,代理ip软件覆盖全国160多个城市、3000万海量代理IP供应,支持一键切换IP,操作简单。


相关文章内容简介