与SO上的许多其他人一样,我不是来自硬核开发背景 - 更多的操作。因此,我发现自己正在为这样的事情而苦苦挣扎,我认为这些事情非常重要。
要求 - 我想轻松测试大量(1000-50000)批次的URL重定向。更接近前者。
我想提供的输入
输出我想...嗯出去
的加分点 - 使用真实浏览器(Selenium等)作为一小部分重定向在JS中完成。很小。能够选择目标URL是等于第一个重定向还是倒数第二个重定向。能够轻松更改HTTP标头(尽管很乐意注入Fiddler等)
我目前的想法
Bash脚本调用curl。我可以做到这一点,但我的问题是能够扩展,即解析csv输入,而不是手动编辑脚本。它也没有涵盖JS重定向(没有交易破坏者)。似乎是最简单的选择。
Selenium IDE脚本。我可能会编写脚本,但再次努力将其扩展到甚至10个URL。可能必须解析CSV以创建每个脚本,然后将它们提供给命令行运行器,然后捕获输出。
尖叫青蛙。我真的很喜欢这个工具,它可以批量测试重定向。但是它没有通过/失败的概念。如此接近成为一站式商店。此外,免费版本不遵循重定向链(即卷曲中的-L)
看起来似乎是其他人必须拥有的问题之一,并以我所想到的主流/更简单的方式解决。提前感谢任何可以提供帮助的人。
答案 0 :(得分:2)
一个解决方案:
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,我会回复!