Curl仅在启用嗅探器时才有效 - 加密的响应内容

时间:2016-03-22 11:47:19

标签: c++ curl

我正在尝试使用curl c ++下载网页。 使用http分析器我可以看到标题并在cURL中使用它。 当我通过curl执行我的GET请求时,我有一个加密的响应内容,如下所示:

‹í=ksÛ8’Ÿ“ªùíÞÊ©1%‘Ô3‰=å8NÆ»ñccMfo§æX   IH(BÇmewÿÏÝ߸ûc×
ð%‰’(Kžä®&›ÐÝèn¼^~ûúê´ÿï×gdNÜã§/ñq©7:ªðP;ïWÈýÄõ‚£Ê8§Ïëõ»»»ÚYþ¨®÷z½ú=f¨`FFã§O_NXH‰=¦~À£Jµ.|†02öÙp÷†"}êÐë
R¢ðè„UFÌc>
…_!¶ðBæN ÷Ê$ÍZ‡œ^Ü`Ñ9x€åÞ(¬¸‹`ì–P?:Yu‡8t /]î}">s*A8sY0f,¬p6…ì!»ëvTâú@ª0C6™Öm1™ú,„_Ÿ0ÄÍh;–ÑèÒv‡1Çh9tØëtMÖ`FË6›5Àó½Þlµ›ÝN§Õ¨  s8=ªPW½
CîB'L¸WGZ\²?ק>÷BUŽÙ6;³aši9òã>JúÔ‡Ô³gq_ÿøkÄüY-y×ôšYKjj6M½g6Ú)í3æí«²»’º¶;F«­?RI~Èâ‚:Íf·e˜­’l¼8¬ã‡»¡ó%sÙ~A‰Ü¦øßàeuà´Å´¸‘F+ßÝ…æÉ   {‰ž;—Z®qÏrøˆ‡Ô•©”©˜FӤ˻­V«Û4öGMAãÌDFf’ˆô-&A‡ÆÐÛ9®{asêZˆ3Täò„t½G%$¤ƒs’d‹àé3•T­üšØêšFÓ0¹­ÂPØ L#ásºHâʯ   ‰ºÙê5ÌîoH¢±žFc‘Η¥Ԙ¦&
A»¹Ç¾æ[SN=(Å÷ùpê(p¹Ãüú{ˆÈ·œëhàr»~
j³oýY®1GŸÆÎndŽd0îuÑùrD
#Ÿi [äu¿Âî¸çUСb$¾ª‚´AÀ _
e('Cá   ‹{¶×dE¢9
¨Â¹¡…V‘؇|KFÇv»ÛíöZ_”kœÖz”DKKtB=MÙʼn:2ÛF¯Ñx³êY`&Fؾ­–ÙyŒ¢†B

如果我在启用嗅探器时执行我的请求,则一切正常。 我无法理解为什么......网站是http,而不是https。

这是我的代码:

        curl_easy_reset(curl);

        /*  Headers ed altri parametri validi per ogni cURL*/
        struct curl_slist *chunk = NULL;
        chunk = curl_slist_append(chunk, "Host: www.*****.it");
        chunk = curl_slist_append(chunk, "User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0");
        chunk = curl_slist_append(chunk, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
        chunk = curl_slist_append(chunk, "Accept-Language: it-IT,it;q=0.8,en-US;q=0.5,en;q=0.3");
        chunk = curl_slist_append(chunk, "Accept-Encoding: gzip, deflate");
        chunk = curl_slist_append(chunk, "Connection: Keep-Alive");

        curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie.txt");
        curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie.txt");
        curl_easy_setopt(curl, CURLOPT_TIMEOUT, 90);
        curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 90);         

        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, chunk);
        curl_easy_setopt(curl,CURLOPT_FOLLOWLOCATION, true);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer); 

        curl_easy_setopt(curl, CURLOPT_URL, "http://www.******.it/"); 
        res = curl_easy_perform(curl);
        writeFile("a.html", readBuffer);       

启用嗅探器后可以更改什么? 为什么我收到一个奇怪的回复内容?

1 个答案:

答案 0 :(得分:1)

这一行:

chunk = curl_slist_append(chunk, "Accept-Encoding: gzip, deflate");

您说您接受gzip, deflate,因此服务器会将其压缩回来。尝试删除该行。