[ php ] [ class ] Snoopy.class.php 를 이용하여 파일 긁어오기 > php

본문 바로가기
사이트 내 전체검색

php

[ php ] [ class ] Snoopy.class.php 를 이용하여 파일 긁어오기

페이지 정보

작성자 웹지기 댓글 0건 조회 6,405회 작성일 18-09-30 05:04

본문

사이트를 긁어오기를 하다보면  fsockopen(): unable to connect to 라는 에러가 나면서 사이트 긁어오기가 되지 않는 경우가 종종있다. 

특히 외국 사이트중에 그런 곳이 많다. 사이트를 방문하지 않고 내용만 쏙 빼가는게 탐탁치 않아서 막아 놓은경우도 있고, 국가적인 차원에서 차단을 시킨경우도 있다.

예를 들어 , 일본 최대 AV 회사중에 하나인 DMM은 한국에서 들어오는 방문자를 차단시켜놓았다. 실제로 AV를 구매하지도 않으면서 트래픽은 엄청나게 잡아 먹기 때문이다. 

또 다른예로 , 미국 국가 기관들중에는 미국에서 접속하지 않으면 페이지에 접근할수도 없는곳들이 있다. 재미있는건 웹브라우져를 열어서 보면 열리는데, 스누피로 긁어올려고 하면 안된다는 점이다.

 

현재 내가 발견한 사이트 긁어오기가 안되는 사이트의 유형은 세가지다. 세션을 물고 들어가야지만 페이지가 열리는 경우와 자기 자신의 도메인에서 오지 않을 경우 정상적인 접근이 아니라고 하는 경우 , 그리고 특정 국가의 아이피를 아예 차단시킨경우다.

 

1. 세션을 물고 들어가야 하는 경우

이 경우는 사이트 관리자가 임의로 막아놓은 경우다. 로봇이 아닌 사람이 직접 들어와야만 접근이 가능하게 하기 위해서다. 

웹브라우져로 직접 주소를 클릭하고 들어와야만 페이지가 열린다. 이 경우에는 보통 세션을 임의로 먹여서 차단하는데.. 스누피에서 세션을 강제로 먹여주면 된다.

사용법은 간단하다. 스누피 fetch 하기전에 아래와 같이 세션값을 임의로 먹여준다.


$snoopy->cookies["SessionID"] = 세션값;

물론, 사이트에서 사용하는 세션변수를 찾아내야한다. 사실 세션변수라기 보다 쿠키값이다. 자바스크립트로 생성해서 쓰는 경우가 많기 때문에 

사이트의 소스를 면밀히 관찰하면 대충 세션변수와 넣어야하는 값을 알아 낼 수가 있었다. 불가능한 경우도 있지만 내 경험상 왠만한곳은 다 가능했다.

 

2. 자기 자신의 도메인으로 부터 들어오지 않으면 막아버리는 경우

보통 페이지가 아이프레임으로 구성된경우 이런 경우가 많았다. 아마도 외부에서 아이프레임안의 내용만 링크해서 가져가지 못하도록 하기 위해서가 아닌가 한다.

위와 마찬가지로 fetch 하기전에 아래와 같이 값을 먹여준다.

$snoopy->referer = “접속한 도메인";

이 방법은 자기가 어디서 왔는지 숨길때도 유용하다. 접속한 도메인을 naver.com으로 한다면, 상대방 로그기록에는 네이버에서 방문한것처럼 보일것이다. 

 

3. 외국 사이트가 한국 ip를 아예 차단한 경우

우리나라 정부에서 차단할때도 있고 , 외국에서 한국을 차단할때도 있다. 두 경우다 우회경로를 통하면 접근할수 있다. 우회경로를 프록시라고 부른다. 

바로 가는게 아니라 다른곳을 들렀다가 가는것이기 때문에 속도는 조금 느리다.

프록시서버들 중에 유료도 있고 무료도 있는데, 왠만한곳은 무료로 가능하다. 아래는 무료프록시 서버를 보여주는 사이트들이다. 

http://nntime.com/proxy-country/United-States-01.htm

www.cybersyndrome.net/plr5.html

 

위 사이트들에서 좋은 프록시 서버를 찾았으면 아래와 같이 세팅해준다.

$snoopy->proxy_host = “프록시서버"; 

$snoopy->proxy_port = "프록시 서버 포트번호";

 

무료프록시를 쓰다보면 아래 에러가 뜰때가 있다.

You are trying to use a node of the CoDeeN CDN Network. Your IP address is not recognized as a valid PlanetLab address, so your request rate is being limited. ...

에러가 한번뜨면 같은 프록시로는 더 이상 접근이 안된다. 원인은 프록시서버가 결국은 트래픽을 토스해서 우리쪽으로 넘겨주는데, 너무 과도하게 토스를 시킬때 나는 에러다. 한마디로 너무 혹사를 시켜서 니 아이피와는 더이상 못해먹겠다는 것이다.

이럴때는 다른 프록시서버로 변경해주면 되지만, 매번 그럴수도 없는 노릇이다. 유료를 쓰거나 자동으로 무료프록시를 변경해주게 설정해줘야한다.

 

 

이상이다. 외국 사이트에서 주기적으로 자료를 받아와야하는 노가다가 있을때.. 위와 같은 방법으로 해봄직하다. 노가다는 컴퓨터에게 시키시고 자네는 영화나 한편 다운받아 보는게 어떠한가?

추천0 비추천0

댓글목록

등록된 댓글이 없습니다.

Total 82건 3 페이지
  • 52 [ php ] fopen, fgets, fclose, fseek, ftell
  • 1. fopen, fgets, fcloselog 파일 또는txt나 csv로 된 DB파일을 불러올 때 쓰는 함수다.$file = 'log.txt'; // 불러올 파일명$f =fopen( $file, "r" ); // 파일을 열어 '읽기만' 한다. (포인터는 파일의 맨 처음)$line =fgets( $f, 4096 ); // 한 줄을 읽는다.echo $line; // 한 줄을 출력한다.fclose($f) // 파일을 닫는다.각 함...
  • 웹지기 09-30 5346 0 0 댓글 0
+1
  • 49 [ php ] 모든 언어를 나의 언어로 만들자!!!(베타버젼 입니다.) - 헌이님
  • 구글 번역이 유료화 되면서 마이크로 소프트사의 API 번역기를 이용하여 만들어 봤습니다.연동하기 시작한지는 좀 되었는데, 오늘 마무리를 합니다.유료화 하는 스킨인데요 ....... .오늘은 특별히 이런 저런 일이 많았습니다. 특히나군포돼지님과 좋은친분으로 갖기로한 나만의(?) 기념으로 올립니다.TEST http://linkma.kr/bbs/write.php?bo_table=Community유료자료실 http://linkma.kr/bbs/board.php?bo_table=SIR_SKIN2초보자를 위...
  • 웹지기 09-30 3426 0 0 댓글 0
  • 48 [ php ] [ class ] 클래스( Class ) 사용을 위한 기본 지식
  • 1. Class 란?클래스는 변수와 변수에 관계되는 함수로 이루어진 하나의 변수형이다.함수저장소 또는 비슷한 함수모음 이라고 이해하면 되겠다.2. Class의 기본 형태<?phpclass Plan{ function testPlan() { echo(" Call to testPlan function!"); }}$skyplan =newPlan; // 객체변수를 생성하기 위해 new를 사용함$skyplan->testPlan(); // testPlan...
  • 웹지기 09-30 3364 0 0 댓글 0
  • 47 [ php ] [ class ] 클래스( class )에서 지시자( -> )의 의미
  • 객체는 자신만의 변수와 함수 가질 수 있습니다. 객체에서 변수, 함수는 각각 멤버변수 , 메쏘드 라고 불립니다.class test { var $a;// 멤버변수 (클래스 안에서 변수를 정의 할때는 var를 반드시 적어 주어야 한다.) var $b; function aaa() {// 메쏘드 (클래스안의 함수를 메쏘드 라고 한다.) $this->abcd = " 알파벳";// 메쏘드안에서 변수 정의할 때는 $this를 붙혀 준다. }}위와 같이 test 란 class 가...
  • 웹지기 09-30 19737 0 0 댓글 0
  • 열람중 [ php ] [ class ] Snoopy.class.php 를 이용하여 파일 긁어오기
  • 사이트를 긁어오기를 하다보면 fsockopen(): unable to connect to 라는 에러가 나면서 사이트 긁어오기가 되지 않는 경우가 종종있다.특히 외국 사이트중에 그런 곳이 많다. 사이트를 방문하지 않고 내용만 쏙 빼가는게 탐탁치 않아서 막아 놓은경우도 있고, 국가적인 차원에서 차단을 시킨경우도 있다.예를 들어 , 일본 최대 AV 회사중에 하나인 DMM은 한국에서 들어오는 방문자를 차단시켜놓았다. 실제로 AV를 구매하지도 않으면서 트래픽은 엄청나게 잡아 먹기 때문이다.또 다른예로 , ...
  • 웹지기 09-30 6406 0 0 댓글 0
  • 44 [ php ] Text Files 핸들링
  • 파일명 menu.ini회사소개,인사말씀,조직도,오시는길제품소개,가전제품,주방제품,욕실제품고객센터,A/S안내,불만접수,1:1게시판커뮤니티,공지사항,자유게시판,이용후기예제 1[code]$File = file('./menu.ini');echo $File;결과 : file 함수는 파일을 읽어서 배열로 반환하는 것을 알 수 있다.결과 array[/code]예제 2첫번째 배열을 출력[code]$File = file('./menu.ini');echo $File[0];결과 : 역시 파일의 전체 내용을 배열로 읽...
  • 웹지기 09-30 3110 0 0 댓글 0
  • 43 [ php ] glob 이용 패턴으로 파일 include 하기
  • [code]$library = array_merge( glob('**/*.class.php'));foreach($library as $lib) include_once $lib;[/code]PHP프레임워크를 제작하던 중 쓰던 방법glob 로 패턴으로나온 리스트를 array로 담고 그걸 merge로 합쳐서 include 하는 형태[code]array glob ( string $pattern [, int $flags= 0 ] )[/code]
  • 웹지기 09-28 3873 0 0 댓글 0
  • 42 [ php ] 자료형 비교표 gettype(), empty(), is_null(), isset(), bool…
  • __EXPRESSION__gettype()empty()is_null()isset()boolean:if($x)$x = "";stringTRUEFALSETRUEFALSE$x = null;NULLTRUETRUEFALSEFALSEvar $x;NULLTRUETRUEFALSEFALSE$xis undefinedNULLTRUETRUEFALSEFALSE$x = array();arrayTRUEFALSETRUEFALSE$x = false;booleanTRUEFALSETRUEFALSE$x = true...
  • 웹지기 09-28 5025 0 0 댓글 0
  • 41 [ php ] PHP에서 CSV 로 내보내기
  • csv 아웃풋용 파일을 하나 만들어두시고 링크------------------------------------------------------------------------------------------------ csv_output.php[code]<?include "환경 설정 파일들";// DB를 정의합니다. 여기서는 DB 클래스 파일을 include해서 사용했습니다.$DB = new DB_Mysql($WEB_HOST,$WEB_USER,$WEB_PASS,$W...
  • 웹지기 09-28 10944 0 0 댓글 0
  • 40 [ php ] allow_url_fopen = off 일때 url파일읽기
  • php.ini 파일에 allow_url_fopen=on으로 설정되어 있으면, URL 주소로 파일 읽어올 때 다음과 같이 처리하지만 allow_url_fopen=off로 설정되어 있는 경우, 일단 php.ini 파일을 수정그러나 웹호스팅을 하는 경우 php.ini 파일을 직접 수정할 수 없는 경우가 있다.이런 경우의 해결책을 찾아보니 다음과 같이 socket을 이용해 URL주소를 읽어오는 방법[code]<?php$url = "URL 주소";$info = parse_u...
  • 웹지기 09-28 5830 0 0 댓글 0
+3
  • 39 [ php ] php 에서 xml 사용하기
  • php에서 사용하기SimpleXML SimpleXML 모듈은 사용자가 쉽게 XML문서를 객체화 시켜 사용 가능 요구사항 : PHP5 XML James Clark의 expat를 사용. XML 문서를 처리할 수 있게 하지만, 유효성을 검증하지는 않음 요구사항 : PHP를 아파치 1.3.9 이상의 모듈로 컴파일 expat 설치 => http://www.jclark.com/xml/expat.htmlDOM XML문서를 DOM API 로 제공함 요구사항 : java VM이 설...
  • 웹지기 09-27 4780 0 0 댓글 0
게시물 검색

회원로그인

접속자집계

오늘
6,585
어제
24,621
최대
33,828
전체
8,306,007

그누보드5
Copyright © funyphp.com. All rights reserved.