当前位置:  开发笔记 > 编程语言 > 正文

重定向curl后获取url

如何解决《重定向curl后获取url》经验,为你挑选了4个好方法。

我需要在页面重定向后最好使用curl或wget获取最终URL.

例如,http://google.com可能会重定向到http://www.google.com.

内容很容易获得(例如curl --max-redirs 10 http://google.com -L),但我只对最终的网址感兴趣(在前一种情况下是http://www.google.com).

有没有办法只使用linux buildin工具?(仅限命令行)



1> Daniel Stenb..:

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 to  instead of stdout
-w FORMAT  What to output after completion

更多

您可能还想添加-I(也就是大写i),这将使命令不下载任何"正文",但它也会使用HEAD方法,这不是包含的问题,并且可能会改变服务器的功能.有时服务器对HEAD反应不好,即使它们对GET反应良好.


如果你不想要文件,你应该可以使用"-o/dev/null"
一些网站还需要带有`curl -A ...`的欺骗性用户代理才能重定向到预期位置。

2> Jan Koriťák..:

谢谢,这对我有所帮助.我做了一些改进,并将其包装在帮助脚本"finalurl"中:

#!/bin/bash
curl $1 -s -L -I -o /dev/null -w '%{url_effective}'

-o输出到 /dev/null

- 我实际上没有下载,只是发现最终的URL

-s静音模式,没有进度条

这使得从其他脚本调用命令成为可能:

echo `finalurl http://someurl/`


感谢您的想法。我将其重写为函数,以便在我的.bashrc文件中用于终端使用,并且该文件中不需要简洁的选项,因此我使用了长名称来对此进行自我记录:`finalurl(){curl --silent- location --head --output / dev / null --write-out'%{url_effective}'-“ $ @”; }`

3> Ceagle..:

你通常可以用wget做到这一点. wget --content-disposition"url"另外如果你添加-O /dev/null你将不会实际保存文件.

wget -O /dev/null --content-disposition example.com



4> Gavin Mogan..:

作为另一种选择:

$ 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=block


301 Moved

301 Moved

The document has moved here.

但它并没有超越第一个.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有