2013-04-26 35 views
0

嘗試開發一個腳本,將一串URL作爲輸入,然後嘗試加載頁面並查看是否實際發生了重定向,然後記錄最終的URL。 我用過這個使用cURL記錄重定向

REDIRECT=`curl -w "%{redirect_url}" --user-agent "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0" http://m.cnbc.com` 
echo "redirects to: ${REDIRECT}" 

此代碼工作正常。但是,只要將URL更改爲http://www.cnbc.com,腳本就會將頁面源代碼的內容輸出到終端。我假設這是因爲在http://www.cnbc.com的情況下沒有重定向,而在http://m.cnbc.com的情況下是因爲用戶代理是桌面類型的。

+0

和問題是什麼? – jm666 2013-04-26 19:14:43

+0

如何在沒有重定向的情況下將最終URL打印到沒有頁面源的控制檯。 – 2013-04-26 19:29:03

回答

0

添加-o /dev/null下降輸出在第二種情況下,和-silent使捲曲不會顯示進度:

# REDIRECT=`curl -w "%{redirect_url}" --user-agent "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0" -o /dev/null -silent http://m.cnbc.com` 
# echo "redirects to: ${REDIRECT}" 
redirects to: http://www.cnbc.com/ 
# REDIRECT=`curl -w "%{redirect_url}" --user-agent "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0" -o /dev/null -silent http://www.cnbc.com` 
# echo "redirects to: ${REDIRECT}"             
redirects to: 
+0

我測試了這個,它的工作原理,只是想了解使用「-o/dev/null」和「-silent」背後的想法是什麼 – 2013-04-26 19:34:48

+1

@RaviGupta默認情況下'curl'將它提取的數據發送到標準輸出,這是你看到的。現在,您將它寫入'/ dev/null',而不是將其放入。但是現在它不是將數據發送到標準輸出,而是'curl'顯示下載進度。你可能會也可能不想要這個,但'-silent'阻止它。 – 2013-04-26 19:38:30