Curl

使用 curl 獲取 URL 的重定向目標

  • April 26, 2019

我想檢查單個 URL 重定向的位置。一個例子可能是來自Google搜尋結果頁面的連結(點擊總是通過Google伺服器)。

我可以這樣做curl嗎?

嘗試這個:

$ LOCATION=`curl -I http://raspberrypi.stackexchange.com/a/1521/86 | perl -n -e '/^Location: (.*)$/ && print "$1\n"'`
$ echo "$LOCATION"
/questions/1508/how-do-i-access-the-distributions-name-on-the-command-line/1521#1521

Google重定向

Google 重定向 URL 略有不同。它們返回一個 Javascript 重定向,它可以很容易地處理,但為什麼不處理原始 URL 和 go curl 一起呢?

$ URL="http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CFAQFjAA&url=http%3A%2F%2Fwww.raspberrypi.org%2F&ei=rv8oUODIIMvKswa4xoHQAg&usg=AFQjCNEBMoebclm0Gk0LCZIStJbF04U1cQ"
$ LOCATION=`echo "$URL" | perl -n -e '/url=([a-zA-Z0-9%\.]*)/ && print "$1\n"'`
$ echo "$LOCATION"
http%3A%2F%2Fwww.raspberrypi.org%2F
$ echo "$LOCATION" | perl -pe 's/%([0-9a-f]{2})/sprintf("%s", pack("H2",$1))/eig'
http://www.raspberrypi.org/

參考

  1. 對於網址解碼…

還有一種更簡單的方法

curl -w "%{url_effective}\n" -I -L -s -S $URL -o /dev/null

它會列印

http://raspberrypi.stackexchange.com/questions/1508/how-do-i-access-the-distributions-name-on-the-command-line/1521

網址

http://raspberrypi.stackexchange.com/a/1521/86

引用自:https://unix.stackexchange.com/questions/45325