簡體   English   中英

cURL忽略CURLOPT_HTTPHEADER

[英]cURL ignores CURLOPT_HTTPHEADER

好的,我有一些網站應該解析...首先,我在Firefox中打開調試器並按F12鍵,然后查看“網絡”標簽,然后輸入所需的網站,並讀取第一個根GET請求,例如

Doman => website.com
File => /

我到達那里所有的請求標頭,並將它們手動寫入php數組,然后在代碼中調用

curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);

以及其他選項,然后致電

curl_exec();

在Firefox中檢查“網絡”選項卡時,我看到請求標頭可能是默認標頭,並且沒有發送手動寫入數組的特定標頭。 與CURLOPT_COOKIEFILE和CURLOPT_COOKIEJAR類似的問題,cookie只是寫入服務器上的cookie文件,但是實際上,下一個請求中還有另一個cookie,而不是以前保存在cookie文件中。

瀏覽器檢查器中的實際請求標頭:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Cache-Control: max-age=0
Connection: keep-alive
Cookie: _ga=GA1.1.1951751996.1563984714; _gid=GA1.1.1564173251.1563984714; _userGUID=0:jyhg490v:AIQdD2Qpm9rmbla1U93mK2a45CFRe49c; jv_enter_ts_2VumZAPpbr=1563984717382; jv_visits_count_2VumZAPpbr=1; .....
Host: localhost
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0

PHP代碼:

<?php
    $headers = ['Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
                'Cache-Control: max-age=0',
                'Connection: keep-alive',
                'Cookie: visid_incap_1987259....,
                'Host: website.com',
                'TE: Trailers',
                'Upgrade-Insecure-Requests: 1',
                'User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'];

    $curl = curl_init("https://www.website.com/");

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_COOKIEFILE, dirname(__FILE__)."/cookies.txt");
    curl_setopt($curl, CURLOPT_COOKIEJAR, dirname(__FILE__)."/cookies.txt");

    echo curl_exec($curl);
?>

您將無法在瀏覽器開發工具中看到標頭發送CURL。 所有請求都在服務器端執行。 標頭已成功發送。 您可以像這樣檢查出來:

curl_setopt($curl, CURLINFO_HEADER_OUT, true);

$sentHeaders = curl_getinfo($curl, CURLINFO_HEADER_OUT);
print_r($sentHeaders);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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