我需要在页面重定向后最好使用curl或wget获取最终URL.
例如,http://google.com可能会重定向到http://www.google.com.
内容很容易获得(例如curl --max-redirs 10 http://google.com -L
),但我只对最终的网址感兴趣(在前一种情况下是http://www.google.com).
有没有办法只使用linux buildin工具?(仅限命令行)
curl
的-w
选项和子变量url_effective
是你要找的.
就像是
curl -Ls -o /dev/null -w %{url_effective} http://google.com
更多信息
-L Follow redirects -s Silent mode. Don't output anything -o FILE Write output toinstead of stdout -w FORMAT What to output after completion
更多
您可能还想添加-I
(也就是大写i
),这将使命令不下载任何"正文",但它也会使用HEAD方法,这不是包含的问题,并且可能会改变服务器的功能.有时服务器对HEAD反应不好,即使它们对GET反应良好.
谢谢,这对我有所帮助.我做了一些改进,并将其包装在帮助脚本"finalurl"中:
#!/bin/bash curl $1 -s -L -I -o /dev/null -w '%{url_effective}'
-o输出到 /dev/null
- 我实际上没有下载,只是发现最终的URL
-s静音模式,没有进度条
这使得从其他脚本调用命令成为可能:
echo `finalurl http://someurl/`
你通常可以用wget做到这一点. wget --content-disposition
"url"另外如果你添加-O /dev/null
你将不会实际保存文件.
wget -O /dev/null --content-disposition example.com
作为另一种选择:
$ curl -i http://google.com HTTP/1.1 301 Moved Permanently Location: http://www.google.com/ Content-Type: text/html; charset=UTF-8 Date: Sat, 19 Jun 2010 04:15:10 GMT Expires: Mon, 19 Jul 2010 04:15:10 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 219 X-XSS-Protection: 1; mode=block301 Moved 301 Moved
The document has moved here.
但它并没有超越第一个.