我有一个合作伙伴,为我创造了一些内容来刮.
@H_502_1@我可以用我的浏览器访问该页面,但是当尝试用户file_get_contents时,我得到一个403被禁止.
我试过使用stream_context_create,但这不是帮助 – 这可能是因为我不知道应该在那里.
1)有没有办法刮刮数据?@H_502_1@2)如果没有,如果合作伙伴不允许配置服务器让我访问,那我该怎么办?
我试过使用的代码:
$opts = array( 'http'=>array( 'user_agent' => 'My company name','method'=>"GET",'header'=> implode("\r\n",array( 'Content-type: text/plain;' )) ) ); $context = stream_context_create($opts); //Get header content $_header = file_get_contents($partner_url,false,$context);
这在您的脚本中不是问题,它的一个功能在于您合作Web服务器的安全性.
很难说出什么阻挡你,很可能是某种阻止刮擦的东西.如果您的合作伙伴可以访问其Web服务器设置,可能有助于确定.
您可以做的是通过设置用户代理头来“伪造Web浏览器”,以模拟标准Web浏览器.
我会推荐cURL这样做,很容易找到好的文档来做到这一点.
// create curl resource $ch = curl_init(); // set url curl_setopt($ch,CURLOPT_URL,"example.com"); //return the transfer as a string curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13'); // $output contains the output string $output = curl_exec($ch); // close curl resource to free up system resources curl_close($ch);