首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用wget记录重定向的URL shell脚本

使用wget记录重定向的URL shell脚本
EN

Stack Overflow用户
提问于 2012-06-20 06:49:45
回答 1查看 3.3K关注 0票数 4

我试图找到一种使用wget将重定向的网站URL列表记录到一个文件中的方法。例如:

www.website.com/1234现在重定向到www.newsite.com/a2as4sdf6nonsense

www.website.com/1235现在重定向到www.newsite.com/ab6haq7ah8nonsense

Wget会输出重定向,但不会记录新位置。我在终端中得到了这个:

代码语言:javascript
复制
HTTP request sent, awaiting response...301 moved permanently
Location: http.www.newsite.com/a2as4sdf6 

..。

我只想将新的URL捕获到一个文件中。

我使用的是这样的东西:

代码语言:javascript
复制
    for i in `seq 1 9999`; do
        wget http://www.website.com/$i -O output.txt
    done

但这会将每个网页的源码输出到该文件。我正在尝试只检索重定向信息。此外,每当输出文件检索到新的URL时,我都会向该输出文件中添加新的一行。

我希望输出看起来像这样:

代码语言:javascript
复制
    www.website.com/1234 www.newsite.com/a2as4sdf6nonsense
    www.website.com/1235 www.newsite.com/ab6haq7ah8nonsense

..。

EN

回答 1

Stack Overflow用户

发布于 2012-08-09 16:01:00

这不是一个完美的解决方案,但它是有效的:

代码语言:javascript
复制
wget http://tinyurl.com/2tx --server-response -O /dev/null 2>&1 |\
   awk '(NR==1){SRC=$3;} /^  Location: /{DEST=$2} END{ print SRC, DEST}'

在这方面,wget不是一个完美的工具。curl会更好一点。

它是这样工作的:我们得到url,但是我们将所有的输出(页面内容)重定向到/dev/null。我们请求服务器响应http头(以获取Loaction头),然后将其传递给awk。我以为你想要最后一个。Awk从第一行(NR==1)获取您请求的URL,并从每个Location头获取目标URL。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11110601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档