我想从网站上获取数据。但它显示我被禁止。 看看这段代码:
<?php
$link='http://www.sitedossier.com/site/wikipedia.org';
$so=file_get_contents($link);
echo ($link);
echo "</br>";
echo ($so);
?>
但它显示被禁止。脚本结果是:
http://www.sitedossier.com/site/wikipedia.org
Forbidden.
但是如果我只提供主站点名称:http://www.sitedossier.com
来获取数据。它抓住了。
这是什么问题?我的脚本错误或任何脚本禁止站点? 如果那样,那我该怎样绕过呢?
谢谢
答案 0 :(得分:1)
有些网站不喜欢机器人。 如果你有cURL,你可以解决这个问题:
<?php
$ch = curl_init('http://www.sitedossier.com/site/wikipedia.org');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20121221 Firefox/20.0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_REFERER, 'http://www.sitedossier.com');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
$data = curl_exec($ch);
echo $data;
?>
编辑: 它现在有效。我猜他们设置了网站所需的cookie。
答案 1 :(得分:0)
该网站需要一个用户代理字符串,file_get_contents
不发送。
使用fsockopen
及相关功能确保发送正确的标头。