2011-06-14 12 views
0

SWF 파일 (플래시 게임)을 성공적으로 다운로드 할 때이 함수를 사용했습니다. 특정 사이트에이 스크립트를 사용하면 실제 크기가 299 바이트 인 모든 게임을 다운로드합니다 (목록에서 4 개의 게임을 다운로드하라는 스크립트를 말했습니까?). Google 크롬으로이 게임을 다운로드하려고 시도했지만 다운로드가 완료되었습니다. 내가 사용하는 CURL 함수에 누락 된 것이 있습니까? 아니면 다운로드 알고리즘이 충분하지 않습니까? 어떤 도움이라도 대단히 감사하겠습니다.PHP와 cURL을 사용하여 파일 다운로드

function saveFlash($fullPaths,$folder,$gamenames,$i){ 
     $curl = curl_init($fullPaths[$i]); 
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
     //Create a new file in the given folder 
     $fp = fopen($folder."/".$gamenames[$i].".swf", 'w'); 
      if ($fp == FALSE){ 
       echo "File not opened<br>";} 
     //Ask cURL to write the contents to a file 
     curl_setopt($curl, CURLOPT_FILE, $fp); 
     //Execute the cURL session 
     curl_exec ($curl); 
     //Close cURL session and file 
     curl_close ($curl); 
     fclose($fp); 
    } 

텍스트 편집기는 다음

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>302 Found</title> 
</head><body> 
<h1>Found</h1> 
<p>The document has moved <a href="http://www.freeonlinegames.com/">here</a>.</p> 
<hr> 
<address>Apache/2.2.3 (CentOS) Server at freeonlinegames.com Port 80</address> 
</body></html> 
+2

299 바이트 파일을 텍스트 편집기로 보았습니까? 대부분 일종의 "죄송합니다. 직접 액세스 할 수 없습니다"라는 오류 메시지가 표시 될 수 있습니다. –

+2

스크립트가 차단됩니다. 이유 때문에 반환 된 데이터 (HTML이어야 함)를 조사하십시오. – hakre

+0

이 문서 – George

답변

1

당신은 그것이 리디렉션을 수행 할 수 있도록 CURLOPT_FOLLOWLOCATION을 설정할 수 있습니다 제공합니다.

CURLOPT_MAXREDIRS을 제어하지 않도록 리디렉션하도록 설정할 수도 있습니다.

1

그 오류는 핫 링크가 허용되지 않는다고 말하는 일반적인 방법입니다. 단순히 SWF를 다운로드하려면 참조자를 설정해야합니다.

curl_setopt($ch, CURLOPT_REFERER, 'http://urlofpagetheswfwasfoundon'); 

그래도 문제가 해결되지 않으면 적절한 사용자 에이전트 문자열을 설정해야 할 수 있습니다.

curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 Something Something'); 

또한 수행하려는 작업을 수행 할 수 있는지 확인하십시오. 다른 사람들의 사이트에서 물건을 뜯어내는 것은 매우 싫은 일이며 대개 불법입니다.

+0

정말 때문에 지식이 코드 라인을 테스트 할 수 있지만,이 사이트 내 IP를 추적하고 입력하는 것이 가능하다 나에 대한 소송? 시작 웹 개발자로서 CURL 공격으로부터 내 사이트를 보호하는 방법을 알아야합니다. – George

+0

물론, 법을 어길 수 있도록 1 분 간 생각하면, 잘못된 사이트에 있습니다. 환영받지 못합니다. 나는 당신이 배우는 데 도움이되는이 본보기를 제공해 주었다. – Brad

+0

감사합니다. 나는 엉덩이가되고 싶지 않아. CURL을 사용하고 CURL을 방어하는 것에 대해 더 많이 알면 잘못된 것이 아닙니다. 내 서버에서이 코드를 친구의 PC에서 테스트해야합니다. – George

관련 문제