$url = "http://www.someredirect.com"; $ch = curl_init($url); curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_NOBODY, true); $response = curl_exec($ch); preg_match_all('/^Location:(.*)$/mi', $response, $matches); curl_close($ch); echo !empty($matches[1]) ? trim($matches[1][0]) : 'No redirect found';
任何幫助將不勝感激!php
當服務器檢查用戶代理字符串時,只有當服務器看到「有效」(根據服務器)用戶代理時,它纔會響應302重定向狀態代碼.任何「無效」用戶代理都不會收到302重定向狀態代碼響應或Location:標頭.服務器
在您的特定狀況下,當服務器收到來自「無效」用戶代理的請求時,它會響應200 OK狀態代碼,而響應正文中沒有文本.curl
(注意:在下面的代碼中,提供的實際URL已被示例替換.)網站
假設http://www.example.com的服務器檢查用戶代理字符串,而且http://www.example.com/product/123/重定向到http://www.example.org/abc.url
在PHP中,您的解決方案是:代理
<?php $url = 'http://www.example.com/product/123/'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; Linux x86_64; rv:21.0) Gecko/20100101 Firefox/21.0"); // Necessary. The server checks for a valid User-Agent. curl_exec($ch); $response = curl_exec($ch); preg_match_all('/^Location:(.*)$/mi', $response, $matches); curl_close($ch); echo !empty($matches[1]) ? trim($matches[1][0]) : 'No redirect found';
而且,此腳本的輸出將是:http://www.example.org/abc.server