簡體   English   中英

PHP cURL請求未遵循重定向

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM