[英]PHP cURL Request Not Following Redirects
我們有一個內置的PHP搜尋器,可以從客戶頁面中提取重要信息。 問題是大多數客戶發布的自定義縮短鏈接使用302到達最終目的地。 我們的搜尋器已經成功地遵循了這些規則(請參見下面的代碼),直到此最新客戶端為止。 這是一個示例鏈接:
http://www.dose.com/lists/26235/s
如果在瀏覽器中訪問該目錄,則會看到標准的302行為,但是如果您使用搜尋器訪問它,它只會返回200,並且不會重定向。 這使我相信我必須使請求看起來盡可能“自然”,但是我仍然沒有成功。 最后,這是我們代碼的cURL部分:
function sendRequest($url)
{
global $ch;
$user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5)".
" Gecko/20041107 Firefox/1.0";
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language: en-US,en;q=0.8',
'Connection: keep-alive'
));
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent );
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_ENCODING, '');
$contents = curl_exec($ch);
//curl_close($ch);
return $contents;
}
經過編輯以包括以下建議,盡管問題仍然存在。
如果還沒有,則需要使用gzdecode()手動填充該函數的響應
更好的方法可能是告訴Curl處理壓縮本身,而不是手動指定壓縮。 嘗試刪除Accept-Encoding標頭行並添加:
curl_setopt($ch, CURLOPT_ENCODING, '');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.