自动发送请求并保存响应

时间:2018-04-02 07:59:32

标签: jmeter postman fiddler charles-proxy burp

我想点击一个URL并保存响应。每次都需要递增URL id并保存响应。例如 -

首先获取请求 - http://google.com/getdata/ Id = 1

第一反应 - 一个

第二次请求 - http://google.com/getdata/ Id = 2

第二次回复 - 两次

依旧......

我希望每次都增加id来点击请求并保存响应

我尝试过使用fiddler,但无法确定如何增加id并保存响应。

P.S。 - 我必须大约6,00,000次点击

7 个答案:

答案 0 :(得分:1)

在JMeter中,您需要单击,按Ctrl + 0和Ctrl + 1创建,线程组和HTTP Request

在线程组中,在Number of Threads (users)

中输入您需要的点击次数

在HTTP请求中放入Server Name or IP www.google.com和Path / getdata /?Id = $ {__ threadNum}

__threadNum将从线程1到命中数创建越来越多的数字。

对于少量点击或调试,您可以通过单击测试计划/线程组级别中的Ctrl + 9来添加View Results Tree以查看请求/响应。

要保存响应,请使用后处理器,特别是通过单击Ctrl + 2在HTTP请求下添加Regular Expression Extractor

  

允许用户使用Perl类型的正则表达式从服务器响应中提取值。作为后处理器,此元素将在其范围内的每个Sample请求之后执行,应用正则表达式,提取请求的值,生成模板字符串,并将结果存储到给定的变量名称中。

导入注意到对于load testing,您需要使用非GUI模式,这意味着使用命令行调用jmeter为jmeter -n -t myTest.jmx

  

您将使用命令行模式(称为非GUI模式)来运行负载测试。   不要使用GUI模式运行负载测试!

要保存对一个文件的所有回复,请参阅save response data,或者如果要为每个帖子/用户保存文件,可以添加Save Responses to a file

答案 1 :(得分:1)

由于' Postman'标签被提到,我可以帮助你如何在邮递员中实现这一点。 Postman有一个使用'变量的好功能。

您可以使用环境变量或全局变量。

在他们的文档上阅读有关这些内容的更多信息: https://www.getpostman.com/docs/v6/postman/environments_and_globals/variables

您可以使用全局变量,例如' counter'并将其设置为1 /您想要的任何起点。 然后您可以像这样修改您的请求: http://google.com/getdata/?Id={{iteration}}

现在,在请求的测试脚本中,您可以编写以下脚本

let i = parseInt(pm.globals.get('iteration')) + 1; pm.globals.set('iteration', i);

此外,要访问响应,您可以在测试脚本中使用以下命令: console.log(pm.response); // Use pm.response as per your needs

将请求保存在集合中。 现在加载Postman的Runner并选择该集合。 现在你可以将迭代次数设置为6,00,000并点击运行!

请记住,大量迭代会导致性能下降。

答案 2 :(得分:0)

请在下面找到适用于您的方案的快照。

Scenario_Testplan

首先,转到用户属性并输入" sample_variables = ID,Response_File_Name"或者您为变量选择的名称。重启jmeter。 创建以下计划: -

  1. CSV数据集配置具有增量值和响应文件名
  2. HTTP请求将使用$ {ID}
  3. 保存对文件的响应将使用$ {Response_File_Name}
  4. 希望这会有所帮助。

答案 3 :(得分:0)

我会通过命令行执行此操作,使用带有curl到URL的while循环,将标准输出的body结果存储到文件中。它看起来像这样:

for i in {1..600000}; do curl "http://google.com/getdata/?id=$i" > body-result-id-$i; done

我无法测试上面的行,因为我现在没有任何访问控制台的权限,但我认为它应该可行。

答案 4 :(得分:0)

的Fiddler:

打开脚本编辑器(Control + r),然后在 OnBeforeResponse

中添加以下代码
 static function OnBeforeResponse(oSession: Session) {
        if(oSession.oRequest["X-SAVE-ME"] != "")
        {
            oSession.SaveResponseBody("C:\\tempfiddler\\" + oSession.SuggestedFilename);
        }

    }

转到“编辑器”标签并在页面中包含带有任意值的标题X-SAVE-ME,将 ID 替换为(就像这样) :http://google.com/getdata/?Id=#)fiddler现在会在执行之前询问ID的起始值和结束值;

答案 5 :(得分:0)

在Burp中,您可以使用Intruder工具执行此操作。首先,在Burp中捕获一个样本请求。如果您不确定如何执行此操作,请参阅getting started文档。

然后右键单击该请求并选择"发送给入侵者"。

在Intruder中的“位置”标签中,首先点击"清除"然后选择要更改的部分,然后单击"添加"

在Payloads选项卡中,选择Payload类型为" Numbers"并配置范围。

点击"开始攻击"

有关详细信息,请参阅documentation

答案 6 :(得分:0)

另一个解决方案是你可以在jmeter中使用Counter。你可以从下面的路径找到 线程组> configElement>计数器。

  1. 根据需要配置计数器。
  2. 为计数器提供参考名称i。
  3. 在请求中使用变量
  4. 了解更多信息。

    CounterForIncrementID