file_get_contents无法在wayfair页面中工作

时间:2016-09-09 17:03:03

标签: php curl libcurl

我遇到了PHP file_get_contents.i的问题我正在尝试在url之后获取信息,但是正在获取验证码页面。

  $link = 'http://www.wayfair.com/a/product_review_page/get_update_reviews_json?_format=json&product_sku=KUS1523&page_number=5&sort_order=relevance&filter_rating=&filter_tag=&item_per_page=5';
  $Page_information = file_get_contents($link);
  print_r($Page_information); 

此外,我正在尝试使用php curl获取页面信息,但显示相同的验证码页面。

            $cookie='cookie.txt';
            if(!file_exists($cookie)){
                    $fh = fopen($cookie, "w");
                    fwrite($fh, "");
                    fclose($fh);
            }
            $ch = curl_init();  
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);   
                curl_setopt($ch, CURLOPT_URL, "http://www.wayfair.com/a/product_review_page/get_update_reviews_json?_format=json&product_sku=KUS1523&page_number=5&sort_order=relevance&filter_rating=&filter_tag=&item_per_page=5");  
                curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);   
                curl_setopt($ch, CURLOPT_COOKIE,1);         
                curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie);
                curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);      
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
                $result11 = curl_exec($ch);   
               print_r($result11);

2 个答案:

答案 0 :(得分:1)

$url = "http://www.wayfair.com/a/product_review_page/get_update_reviews_json?_format=json&product_sku=KUS1523&page_number=5&sort_order=relevance&filter_rating=&filter_tag=&item_per_page=5";
$cookie = getcwd().DIRECTORY_SEPARATOR.'cookie.txt';

$ch = curl_init();  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);   
curl_setopt($ch, CURLOPT_URL, $url);  
curl_setopt($ch, CURLOPT_BINARYTRANSFER, TRUE);   
curl_setopt($ch, CURLOPT_COOKIE,1);         
curl_setopt($ch, CURLOPT_COOKIEJAR,$cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie);      
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

//added
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36");

$result11 = curl_exec($ch);   
print_r($result11);

试试这个

答案 1 :(得分:1)

如果您从禁用cookie和javascript的浏览器中分析标题,您应该看到最小的发送 - 有些,可能全部可能是必需的,并使用context参数设置。

/* set the options for the stream context */
$args=array(
    'http'=>array(
        'method' => "GET",
        'header' => array(
                'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0',
                'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
                'Host: www.wayfair.com',
                'Accept-Encoding: gzip, deflate'
            )
        )
    );
/* create the context */
$context=stream_context_create( $args );
$link = 'http://www.wayfair.com/a/product_review_page/get_update_reviews_json?_format=json&product_sku=KUS1523&page_number=5&sort_order=relevance&filter_rating=&filter_tag=&item_per_page=5';

/* Get the response from remote url */
$res = file_get_contents( $link, FILE_TEXT, $context );

/* process the response */
print_r( $res );