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

使用wget记录重定向的URL shell脚本,shell,url,redirect,wget,ping,Shell,Url,Redirect,Wget,Ping,我试图找到一种使用wget将重定向网站URL列表记录到一个文件中的方法。 例如: www.website.com/1234现在重定向到www.newsite.com/a2as4sdf6 及 www.website.com/1235现在重定向到www.newsite.com/ab6haq7ah8无意义 Wget会输出重定向,但不会记录新位置。我在候机楼看到这个: HTTP request sent, awaiting response...301 moved permanently Locatio

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

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

www.website.com/1235
现在重定向到
www.newsite.com/ab6haq7ah8无意义

Wget会输出重定向,但不会记录新位置。我在候机楼看到这个:

HTTP request sent, awaiting response...301 moved permanently
Location: http.www.newsite.com/a2as4sdf6 

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

我用的是这样的东西:

    for i in `seq 1 9999`; do
        wget http://www.website.com/$i -O output.txt
    done
但这会将每个网页的源代码输出到该文件中。我正在尝试只检索重定向信息。此外,我希望在每次检索新URL时向同一输出文件添加新行

我希望输出看起来像:

    www.website.com/1234 www.newsite.com/a2as4sdf6nonsense
    www.website.com/1235 www.newsite.com/ab6haq7ah8nonsense

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

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
并不是一个完美的工具<代码>卷曲
会更好一些

这就是它的工作原理:我们获取url,但将所有输出(页面内容)重定向到/dev/null。我们请求服务器响应http头(以获取Loaction头),然后将其传递给awk。 请注意,可能有几个重定向。我以为你想要最后一个。
Awk从第一行(NR==1)获取您请求的URL,并从每个位置头获取目标URL。最后,我们打印您所需要的SRC和DESC。

如果您愿意考虑Perl,而不是WGET,您可以尝试使用Perl模块WWW::机械化,如该解决方案中所描述的:这对我起作用。谢谢我现在唯一被卡住的部分是使用上面提到的代码并在Perl中循环。如何运行:www.website.com/n,其中n是一个从1到100计数的数字?
foreach(1..100){my$site=“www.website.com/$”;#使用$site;}
Perfect。谢谢你的帮助。