2013-02-23 4 views
1

TOR 네트워크 뒤에서 공유 서버 (포트 80 및 443 만 열려 있음)에서 PHP cURL을 사용하여 스크랩을 스크리닝하고 싶습니다. 포트 8118 및 9050이 닫혀 있기 때문에 아래의 코드를 시도하여 내 서버에서 "액세스가 거부되었습니다"오류가 발생합니다. 나는 지원에 연락했고 불가능하다고 말했다. 의심 스럽지만 영원히 수색을하고 쉬운 해결책을 찾지 못했습니다. 이견있는 사람?포트 80 또는 443의 TOR 네트워크 - 공유 서버의 TOR

 <?php 
$fh = fopen('curldebug.txt','w') or die($php_errormsg); 
// Initialize cURL 
$ch = curl_init(); 

// Set the website you would like to scrape 
curl_setopt($ch, CURLOPT_URL, "http://www.fixitts.com/whatismyip.php"); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0'); 
curl_setopt($ch, CURLOPT_REFERER, 'http://www.fixitts.com'); 
curl_setopt($ch, CURLOPT_PROXY, '127.0.0.1:8118'); 

curl_setopt($ch, CURLOPT_VERBOSE, true); 
curl_setopt($ch, CURLOPT_STDERR, $fh); 
// Set cURL to return the results into a PHP variable 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 

// This executes the cURL request and places the results into a variable. 
$curlResults= curl_exec($ch); 

     if(curl_errno($ch)) 
     { 
      echo 'Curl error: ' . curl_error($ch); 
     } 

     $info = curl_getinfo($ch); 
     print_r ($info); 

// Close curl 
curl_close($ch); 
fclose($fh) or die($php_errormsg); 
// Echo the results to the screen> 
echo $curlResults; 

?> 

답변

4

웹 호스트의 지원이 올 바릅니다.

TOR을 통한 화면 스크래핑은 믿을 수 없을 정도로 반사회적 인 일입니다. 많은 웹 사이트가 알려진 TOR 종료 노드에서 액세스를 차단하는 이유 중 상당 부분입니다. 중지하십시오.

0

로컬 프록시가 8118 (Polipo 또는 Privoxy)에서 수신 대기한다고 가정합니다.

포트 8118 및 9050은 로컬 호스트 (127.0.0.1)에서 TOR 및 Polipo가 기본적으로 사용하는 포트입니다.
로컬 호스트 포트가 공유 서버에 의해 차단되지 않습니다. 127.0.0.1은 사용자의 PC입니다. 차단 된 경우 방화벽 (방화벽)에서 수행하는 작업이 있습니다.

또한 TOR과 Polipo (또는 무엇이든)에게 구성 파일의 다른 포트를 사용하도록 알릴 수 있습니다. 위의 코드에서 8118을 다른 것으로 변경하고 Polipo/Privoxy에서도 변경하십시오.

공유 서버가 80 및 443으로 제한되는지는 중요하지 않습니다. TOR이 모든 것을 보내야합니다. TOR 탈출구 서버는 가져온 것이 무엇이든지 풀고 이동해야하는 포트 (원래 대상 포트)를 봅니다.

공유 서버가 알려진 TOR 서버에 대한 포트 80 및 443 연결을 차단할 수 있습니다. 브라우저를 열고 프록시를 SOCKS127.0.0.1 포트 9050으로 설정하고 웹을 탐색 할 수 있는지 확인하십시오. 그래도 문제가 해결되지 않으면 답변을 얻었을 것입니다. TOR 문서를 확인할 수 있습니다. 그들이 TOR이 막히는지를 알려주는 방법을 알려줍니다.

+0

잠깐, 뭐라구? 아닙니다.이 PHP 코드가 서버에서 실행중인 경우, '127.0.0.1'은 사용자 컴퓨터가 아닌 서버입니다. – duskwuff

+0

@duskwuff - 그의 PHP 코드가 공유 서버라고 생각하십니까 ??? 그것은 심지어 말이되지 않습니다. 127.0.0.1은 PC에만 국한되어 있습니다. – user199340

+0

예. PHP와 "공유 서버에서 PHP cURL 사용하기"라는 표현 사이에, 나는 이것이 웹 호스팅 서버에서 실행될 것이라는 것을 확신합니다. 해당 서버가 TOR 노드를 실행 중이면 작동 할 수도 있지만 어리석은 일입니다. – duskwuff