curl请求的浏览器头


browser headers for curl request

我们有一个任务来过滤来自机器人的真实卷曲请求。我向网站发送了一个curl请求,但它返回给我一个无效的图像文件(我知道,因为当我用浏览器查看它时,它可以工作)。不知怎么的,它知道我的请求是不真实的。这里有没有我忽略的字段,我正试图准确地模仿浏览器请求。

 $header_arr = array(
            '0' =>'Host: www.myittest.com',
            '1' =>'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0',
             '2' =>'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*'/*;q=0.8',
             '3' =>'Accept-Language: en-US,en;q=0.5', 
             '4' =>'Accept-Encoding: gzip, deflate',
             '5' =>'Connection: keep-alive',
          );


    $ch = curl_init($url);         
    curl_setopt($ch, CURLOPT_HTTPHEADER, $header_arr);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);  
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);         
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);    
    curl_setopt($ch, CURLOPT_MAXREDIRS, 6);

    $raw=curl_exec($ch);

您请求了gzip/delate编码,但curl没有意识到这一点,因此它不会解码图像。添加这个应该可以修复它:

curl_setopt($ch, CURLOPT_ENCODING, '');