使用curl擷取Location:重新導向後url

來源:互聯網
上載者:User

標籤:pos   array   location   variable   百度百科   函數   ace   sina   資訊   

在php擷取http頭部資訊上,php有個內建的函數get_headers(),我以前也是用這個的,聽說效率在win上不咋地,再加上最近研究百度url無果,寫了cURL擷取重新導向url的php代碼來折騰。
以前我是用get_headers來擷取跳轉後的url

get_headers的代碼

1234567891011 //curl的百度百科$url = ‘http://www.baidu.com/link?url=77I2GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil-rckpQ8_kjGKNNq‘;$header = get_headers($url,1);if (strpos($header[0],‘301‘) || strpos($header[0],‘302‘)) {    if(is_array($header[‘Location‘])) {        $info = $header[‘Location‘][count($header[‘Location‘])-1];    }else{        $info = $header[‘Location‘];    }}echo $info;

 

現在用cURL來重寫一遍代碼
CURL是需要設定curl_setopt 和curl_getinfo才可以擷取 Location:重新導向

123456789101112131415 //curl的百度百科$url = ‘http://www.baidu.com/link?url=77I2GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil-rckpQ8_kjGKNNq‘; $ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);// 不需要頁面內容curl_setopt($ch, CURLOPT_NOBODY, 1);// 不直接輸出curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);// 返回最後的Locationcurl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);curl_exec($ch);$info = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);curl_close($ch);echo ‘真實url為:‘.$info;

 

 


因為還和網速有關,兩段代碼的效率我還沒測試 。我使用get_headers本地測試是可以的,但是上傳至伺服器執行出錯,不知道為什嗎?

end....

來源:http://enenba.com/?post=252

PHP擷取重新導向URL的幾種方法:http://blog.sina.com.cn/s/blog_5b1acf750102v6iw.html

使用curl擷取Location:重新導向後url

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.