获得请求ip的util

package com.cepo.blackbird.util;

import javax.servlet.http.HttpServletRequest;


public class IpUtil {
   
   //region 获取用户ip地址
  
   public static String getIpAddress(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.getHeader("HTTP_CLIENT_IP");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getHeader("HTTP_X_FORWARDED_FOR");  
        }  
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {  
            ip = request.getRemoteAddr();  
        }  
        return ip;  
    } 
 
   
}
### 实现并发测试中模拟随机出口IP的HTTP请求 为了在并发测试过程中实现模拟随机出口IP的功能,可以利用JMeter来完成这一目标。具体方法如下: #### 配置User Defined Variables定义IP池 通过配置`User Defined Variables`组件,能够预先设定一系列待使用的IP地址作为IP池。每一个IP被分配一个唯一的名称标识符以便后续调用[^4]。 ```properties ip_1=192.168.0.1 ip_2=192.168.0.2 ... ``` #### 使用BeanShell PreProcessor动态选取IP 借助于`BeanShell PreProcessor`脚本处理器,在每次发起HTTP请求前动态地从上述已定义好的IP列表里挑选出一个用于本次请求的源IP地址。此过程可通过简单的Java代码逻辑轻松达成,比如采用随机数生成器选出不同的IP值。 ```java import java.util.Random; String[] ips = {vars.get("ip_1"), vars.get("ip_2") /* , ... */}; Random rand = new Random(); int index = rand.nextInt(ips.length); vars.put("random_ip", ips[index]); ``` #### 设置HTTP Request Sampler指定源IP 最后一步是在实际发出HTTP请求的地方——即`HTTP Request Sampler`内,设置其属性中的“Source address”,并将之前计算得到的那个随机选择出来的IP变量`${random_ip}`填入此处。这样就能确保每一次迭代运行时都会使用一个新的虚拟客户端IP去访问目标服务端口了。 ```http GET / HTTP/1.1 Host: example.com X-Forwarded-For: ${random_ip} ``` 以上步骤实现了基于JMeter平台下的并发测试环境中模拟不同真实用户的网络行为模式,从而更贴近实际情况来进行系统的压力评估与优化分析工作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值