你如何批量测试URL重定向?

时间:2015-01-22 22:12:48

标签: redirect selenium curl url-redirection http-redirect

与SO上的许多其他人一样,我不是来自硬核开发背景 - 更多的操作。因此,我发现自己正在为这样的事情而苦苦挣扎,我认为这些事情非常重要。

要求 - 我想轻松测试大量(1000-50000)批次的URL重定向。更接近前者。

我想提供的输入

  • 来源网址&目标网址

输出我想...嗯出去

  • 通过/失败
  • HTTP响应代码

的加分点 - 使用真实浏览器(Selenium等)作为一小部分重定向在JS中完成。很小。能够选择目标URL是等于第一个重定向还是倒数第二个重定向。能够轻松更改HTTP标头(尽管很乐意注入Fiddler等)

我目前的想法

  • Bash脚本调用curl。我可以做到这一点,但我的问题是能够扩展,即解析csv输入,而不是手动编辑脚本。它也没有涵盖JS重定向(没有交易破坏者)。似乎是最简单的选择。

  • Selenium IDE脚本。我可能会编写脚本,但再次努力将其扩展到甚至10个URL。可能必须解析CSV以创建每个脚本,然后将它们提供给命令行运行器,然后捕获输出。

  • 尖叫青蛙。我真的很喜欢这个工具,它可以批量测试重定向。但是它没有通过/失败的概念。如此接近成为一站式商店。此外,免费版本不遵循重定向链(即卷曲中的-L)

看起来似乎是其他人必须拥有的问题之一,并以我所想到的主流/更简单的方式解决。提前感谢任何可以提供帮助的人。

2 个答案:

答案 0 :(得分:2)

一个解决方案:

CSV:

http://google.com;http://www.google.fr
http://domain.null;http://www.domain.null

#!/bin/bash

while IFS=";" read -r url1 url2; do
    ret=$(curl -s -o /dev/null -w "%{http_code}\n" "$url1")
    ((ret >= 200 && ret <= 400)) && echo 'url1 PASS' || echo 'url1 FAIL'
    echo "url2 $(curl -s -L -o /dev/null -w "%{http_code}\n" "$url2")"
done < csv

如果您需要知道(或不是)重定向的真实URL,请使用

curl -L -s -o /dev/null http://google.fr -w "%{url_effective}\n"

随意改善以满足您的需求。

答案 1 :(得分:1)

非常感谢StardustOne,但我觉得我必须重新发明轮子。

忽略测试浏览器内部和覆盖JS场景的要求我再次看了一下,我发现的最好的解决方案是在Devops Weekly时事通讯中发送的内容

闷烧 - click

我知道为我们的某个供应商工作的一名员工也正在开发一个包含Python请求库的类似应用程序,我计划很快将两者连接起来,找出哪个最好。如果他的努力击败了Smolder,我会回复!