2011-12-06 37 views
1

假设我有一个bash脚本,它通过一个包含所有已重定向的旧URL列表的文件。curl编译重定向页面列表

curl --location http://destination.com将通过重定向来处理页面。但是,我对内容不感兴趣,但对重定向点的位置感兴趣,以便我可以更新我的记录。

curl的命令行选项输出URL的新位置是什么?

回答

9

您WOU要离开了--location/-L标志,并使用-w,检查redirect_url变量。 curl -w "%{redirect_url}" http://someurl.com应该这样做。

用于脚本:

REDIRECT=`curl -w "%{redirect_url}" http://someurl.com` 
echo "http://someurl.com redirects to: ${REDIRECT}" 

curl man page

-w, --write-out <format> 

作出标准输出卷曲显示信息的传递完成之后。格式是一个字符串,可以包含与任何数字 变量混合的纯文本。格式可以指定为字符串“string”,或者可以使用curl从具有“@filename”的文件中读取格式,并通过 告诉curl从您写为“@ - ”的stdin读取格式。

输出格式中的变量将被替换为 的值或curl认为合适的文本,如下所述。所有变量 被指定为%{variable_name}并输出一个正常的%,您只需将它们写为%%即可 。您可以使用\ n输出换行符,一个滑块 以\ r返回,标签空间以\ t返回。

注:的%-symbol是在Win32的环境下, 所有%出现必须使用此选项时加倍的特殊符号。

可用的变量有:

...
redirect_url当一个HTTP请求没有-L而遵循 重定向时,这个变量将显示实际的URL重定向 带你。 (在7.18.2中增加)
...

1
man curl 

然后

search redirect_url 

REDIRECT_URL当一个HTTP请求没有-L作出跟进 重定向,这个变量将显示实际的URL重定向会 带你去。 (7.18.2中新增 )

上面的变量是-w/--write-out <format>

2

这可能会实现(作为起点)

curl -sI google.com | head -1 | grep 301 | wc -l