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

Redirect 如何批量测试URL重定向?,redirect,selenium,curl,url-redirection,http-redirect,Redirect,Selenium,Curl,Url Redirection,Http Redirect,和许多其他人一样,我不是一个硬核开发背景-更多的是ops。因此,我发现自己在与这样的事情作斗争,我想这很适合这里 要求-我想轻松测试大量(1000-50000)URL重定向。更接近前者 我想提供的输入 源URL和目标URL 我想。。。嗯,滚出去 通过/不通过 HTTP响应代码 使用真正的浏览器(Selenium等人)获得的积分,因为很少一部分重定向是在JS中完成的。非常小。能够选择目标URL是否等于第一个重定向或倒数第二个重定向。能够轻松更改HTTP头(尽管很乐意使用Fiddler等注入

和许多其他人一样,我不是一个硬核开发背景-更多的是ops。因此,我发现自己在与这样的事情作斗争,我想这很适合这里

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

我想提供的输入

  • 源URL和目标URL
我想。。。嗯,滚出去

  • 通过/不通过
  • HTTP响应代码
使用真正的浏览器(Selenium等人)获得的积分,因为很少一部分重定向是在JS中完成的。非常小。能够选择目标URL是否等于第一个重定向或倒数第二个重定向。能够轻松更改HTTP头(尽管很乐意使用Fiddler等注入这些头)

我目前的想法

  • Bash脚本调用curl。我可以做到这一点,但我的问题是如何使其具有可伸缩性,即解析csv输入,而不是手动编辑脚本。此外,它不包括JS重定向(无dealbreaker)。似乎是最简单的选择

  • Selenium IDE脚本。我可能可以编写脚本,但还是很难将其扩展到10个URL。可能需要解析CSV来创建每个脚本,然后将它们输入到命令行运行程序中,然后捕获输出

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

这似乎是其他人一定遇到过的问题之一,并以我所想到的主流/更简单的方式解决。提前感谢所有能够提供帮助的人。

一个解决方案:

csv: 代码:
请随意改进,以满足您的需要。

非常感谢StardustOne,但我觉得我必须重新设计一下方向盘

忽略了在浏览器中测试和覆盖JS场景的要求,我再次查看了,我发现迄今为止最好的解决方案是Devops每周时事通讯中发送的内容

阴燃-


我知道我们的一家供应商的一名工作人员也在开发一个类似的应用程序,该应用程序包装了Python请求库,我计划很快将这两个应用程序背对背,以找出哪一个实际上是最好的。如果他的努力胜过闷烧,我会发回的

这是一个极好的开始Sputnick,我试图适应它,但我错过了一个主要的优势案例,即通过/失败是从HTTP响应代码判断的。如果你的URL点击了错误的重定向(但仍然点击了重定向),那么它就不会被发现。我正在努力获得最后一块,我想这涉及到在-w中使用更多的参数,然后将每个参数分配到变量中,然后在变量和期望值之间进行一点比较。目前人才不足。这也没什么大不了的,但是这可能只需要1个redir就可以为整个事情提供动力,而不是2个。添加了代码来了解有效的URL,我没有得到您所需要的。你的英语很好,但是有太多的噪音(一种TL;DR),我更喜欢样本输入/输出,更容易理解=)有什么要报告的吗?
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
curl -L -s -o /dev/null http://google.fr -w "%{url_effective}\n"