PHP抓取返回403 Forbidden

时间:2014-04-08 12:19:03

标签: php curl web-scraping simple-html-dom

我正在尝试抓取这个网站,但是当我回复img脚本时。返回 403 Forbidden-nginx / 1.4.3

任何人都可以提供帮助吗?

这是我的代码:

$url = '1cak.com/trending-0-&ajax_seek=1396912798&seek_max_time=1396921201';

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 15);
curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17)');
curl_setopt($ch, CURLOPT_FRESH_CONNECT, TRUE);
$curl_scraped_page = curl_exec($ch);

$html = new simple_html_dom();
$html->load($curl_scraped_page);


foreach($html->find('div[style="border-bottom:1px solid #ccc;padding-bottom:10px;padding-top:10px"]') as $item){
    echo $item->find('img',0)->src ."<br/>";
    echo "<img src=".$item->find('img',0)->src."><br/>";
}

2 个答案:

答案 0 :(得分:1)

错误403可能意味着很少:

  1. 您的IP已被阻止,因为您已经尝试了太多次来删除数据,并且您无法对其进行任何操作(除了使用某种代理,但这是另一个问题)。您可以通过在Web浏览器中从服务器尝试相同的页面来测试这一点(如果您只能访问ssh,则使用chrome / chromium或lynx)。

  2. Page可以通过用户代理或推荐人或类似方式控制访问者。由于您已经尝试模拟浏览器,我不认为这是问题所在。

答案 1 :(得分:0)

在回显大量数据时,我多次遇到“禁止”错误。在开发复杂的PHP脚本时,我倾向于提出许多“诊断”回声。

我发现的唯一修复是删除尽可能多的诊断回应语句。我还没有确定回声限制是什么,但我怀疑每个网络主机都会有所不同。