2014-04-08 4 views
0

나는이 웹을 긁어 내려고 노력하고 있지만, 나는 img 스크립트를 반향합니다. 반환 403 금단의 nginx/1.4.3PHP 긁기 반환 403 금지됨

누구든지 도와 줄 수 있습니까?

이 내 코드 :

$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

어쩌면 누군가는 당신이 그렇게하기를 원하지 않을 것입니다. ;) – Carsten

답변

1

오류 403은 몇 가지를 의미 할 수있다 :

  1. 당신의 IP는 사용자가 데이터를 긁어 너무 여러 번 시도 때문에 차단, 아무것도 없다되었습니다 당신은 그것에 대해 할 수 있습니다 (떨어져 일종의 프록시를 사용하여,하지만 그건 다른 질문에 대한 이야기입니다). 웹 브라우저 (chrome/chromium 또는 lynx)에서 서버와 동일한 페이지를 시도하여 테스트 할 수 있습니다 (ssh에만 액세스 할 수있는 경우).

  2. 페이지에는 사용자 에이전트 또는 리퍼러 또는 유사 사용자가 방문하는 사용자에 대한 일종의 제어 권한이 있습니다. 이미 브라우저를 에뮬레이트하려고하고 있기 때문에 이것이 문제가 아니라고 생각합니다.

0

많은 양의 데이터를 에코 할 때 "금지 된"오류가 여러 번 발생했습니다. 나는 복잡한 PHP 스크립트를 개발할 때 많은 "진단"에코를 넣는 경향이 있습니다.

내가 발견 한 유일한 해결책은 최대한 많은 진단 echo 문을 제거하는 것입니다. 나는 반향 한계가 무엇인지를 확증하지 못했지만 모든 웹 호스트마다 다를 것이라고 생각합니다.