마스터욱
Toggle navigation
  • 회원가입 | 정보찾기
ICON NAVIGATION
정보수정 쪽지함 주변맛집 익명채팅
공지사항 채팅 개발문의 방명록
  • MAIN NAVIGATION
  • 메인
  • 마스터욱 공간
    • 마스터욱 소개
    • 개발 리스트
    • 공지사항
    • 방명록
  • 마스터욱 외부자료
    • 네이버
    • 티스토리
    • 깃허브(github)
  • 개인 프로젝트
    • 랜덤 이성 채팅
    • Auto 크롤링
    • Javascript 카카오 채팅
    • 파이썬 뉴스매매
    • C# 키움 주식 자동매매
    • C# 키움 주식 패턴 분석
    • PHP 욱보드
    • 업비트 자동매매 개발
    • 업비트 자동매매 일지
  • 개발 의뢰
    • 개발 문의
    • 개발 견적
    • 개발 피드백
    • FAQ
  • 개발 경험 Tip
    • PHP
    • JSP
    • HTML
    • Javascript
    • Android
    • C#
    • MySQL
    • Linux
    • Python
    • NodeJS
    • React
    • Vue.js
    • Flutter
    • 정규식
    • 기타
  • 커뮤니티
    • 자유게시판
    • 추천사이트
    • 영화
    • 여행
    • 유머
    • Overseas News
  • 맛집&즐길 거리 탐방
    • 맛집 정보
    • 즐길 거리 정보
    • 내 주위 맛집&즐길 거리
  • 공유 사진
    • 음식
    • 여행
    • 캐릭터
    • 배경
    • 기타
    • 이모티콘
    • 일러스트
  • 놀이터
    • 블록뽀시기
    • 트레이딩뷰
    • 로또 시뮬레이션
    • 쳇쳇 익명 채팅
    • 랜덤 이성 채팅
    • AI 채팅
    • 미니 채팅
    • 바이너리 테스트
    • 마번호 생성기
    • 바카라 시뮬레이션
    • 홀짝점수 테스트
    • 로또 분석기
SITE STATISTICS
  • - 명 현재 접속자
  • 378 명 오늘 방문자
  • 1,712 명 어제 방문자
  • 5,192 명 최대 방문자
  • 701,125 명 전체 방문자
  • 2,571 개 전체 게시물
  • 496 개 전체 댓글수
Facebook Twitter GooglePlus KakaoStory NaverBand
  1. 홈
  2. PHP
목록으로

php - 스누피(Snoopy)로 자동으로 댓글달기 프로그램 개발

마스터욱 2 286 0 0 2017-05-08 07:16:17

 

 

  1. include_once "./Snoopy.class.php";
  2. $snoopy = new Snoopy();
  3.  
  4. function sendSnoopy(){
  5.     //print_r($data);exit;
  6.  
  7.     global $snoopy, $data;
  8.  
  9.     $host = "호스트주소";
  10.     $snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
  11.     $snoopy->referer = $host;
  12.  
  13.     //로그인
  14.     echo "///////////////// 로그인 시작/////////////////////\n";
  15.     $snoopy->httpmethod = "POST";
  16.     $snoopy->submit($data['url_login'], array(
  17.         $data['form_id'] => $data['id'],
  18.         $data['form_pw'] => $data['pw']
  19.     ));
  20.     $snoopy->setcookies();
  21.     $snoopy->fetch($host);
  22.     echo "///////////////// 로그인 성공/////////////////////\n";
  23.     /*
  24.     $result = $snoopy->results;
  25.     echo "result = {$result}";exit;
  26.     */
  27.  
  28.     foreach($data['list_array'] as $url => $count){
  29.         echo "///////////////// {$url} 시작/////////////////////\n";
  30.         /*
  31.         $snoopy->fetch($host);
  32.         $result = $snoopy->results;
  33.         echo "result = {$result}";exit;
  34.         */
  35.  
  36.         $snoopy->fetch($url);
  37.         $result = $snoopy->results;
  38.         //echo "url = {$url}\nresult={$result}";exit;
  39.         preg_match_all('/<div class=\"list-img\">\n\t\t\t\t\t\t\t<a href=\"(.*?)\">/is', $result, $temp);
  40.         //print_r($temp);exit;
  41.         $url_list = $temp[1];
  42.         for($i = 0; $i < $count; $i++){
  43.             $detail_url = str_replace("&", "&", $url_list[$i]);
  44.             //echo $detail_url."\n";exit;
  45.  
  46.             $args = explode("?", $detail_url);
  47.             $get = explode("&", $args[1]);
  48.             $bo_table = "";
  49.             $wr_id = "";
  50.             foreach($get as $value){
  51.                 $ttt = explode("=", $value);
  52.                 if($ttt[0] == "bo_table"){
  53.                     $bo_table = $ttt[1];
  54.                 }
  55.                 else if($ttt[0] == "wr_id"){
  56.                     $wr_id = $ttt[1];
  57.                 }
  58.             }
  59.  
  60.             //echo "bo_table = {$bo_table} / wr_id = {$wr_id}";exit;
  61.  
  62.             //url_page 로 제목, 쿠키url을 알아내자.
  63.             $snoopy->fetch($detail_url);
  64.             $result = $snoopy->results;
  65.             //echo $result;exit;
  66.             preg_match('/<h1 itemprop=\"headline\" content=\"(.*?)\">/is', $result, $temp);
  67.             //print_r($temp);exit;
  68.             $title = $temp[1] . " 굿굿굿!";
  69.  
  70.             preg_match('/<div class=\"list-group font-12\"><a class=\"list-group-item break-word\" href=\"(.*?)\" target=\"_blank\">/is', $result, $temp);
  71.             //print_r($temp);exit;
  72.             $cookie_link = str_replace("&", "&", $temp[1]);
  73.             //echo $cookie_link;exit;
  74.  
  75.             /*
  76.             echo "
  77.             title = {$title}\n
  78.             cookie_link = {$cookie_link}
  79.             ";
  80.             exit;
  81.             */
  82.  
  83.             //필요하다면 별도의 쿠키까지
  84.             if(trim($cookie_link)){
  85.                 $snoopy->httpmethod = "GET";
  86.                 $snoopy->submit($cookie_link);
  87.                 $snoopy->setcookies();
  88.             }
  89.  
  90.             $snoopy->httpmethod = "POST";
  91.             $snoopy->submit($data['url_comment'], array(
  92.                 $data['form_comment'] => $title,
  93.                 "w" => "c",
  94.                 "bo_table" => $bo_table,
  95.                 "wr_id" => $wr_id,
  96.             ));
  97.  
  98.             echo "url : {$detail_url} / count = {$count} / title = {$title}\n";
  99.         }
  100.  
  101.         echo "///////////////// {$url} 끝/////////////////////\n";
  102.         //exit;
  103.     }
  104. }
  105.  
  106. $data = array();
  107. $data['form_id'] = "mb_id";
  108. $data['form_pw'] = "mb_password";
  109. $data['id'] = "로그인아이디";
  110. $data['pw'] = "로그인패스워드";
  111. $data['url_login'] = "http://도메인/bbs/login_check.php";
  112. $data['url_comment'] = "http://도메인/bbs/write_comment_update.page.php";
  113. $data['form_comment'] = "wr_content";
  114. $data['list_array'] = array(
  115.     "게시판리스트1"   => 10,
  116.     "게시판리스트2"   => 5,
  117.     "게시판리스트3"   => 3,
  118.     "게시판리스트4"   => 2
  119. );
  120.  
  121. echo "sendSnoopy Start\n";
  122. sendSnoopy();

 

스누피(Snoopy) 클래스를 이용한 자동댓글 달기 소스입니다. 

실험대상 사이트는 공개할 수가 없으며, 해당 사이트는 그누보드로 제작이 되어 있었음을 알려드립니다.

 

로직의 순서는 아래와 같습니다.

1. 사이트에 로그인을 한다.

2. 게시판 리스트 페이지에 접근한다.

3. 리스트 페이지에서 각각의 게시판 상세페이지로 이동하는 링크들을 수집한다.

4. 상세페이지에 접근한다.

5. 상세페이지에서 게시글 제목을 추출한다.

6. 상세페이지 제목 + "굿굿굿" 스트링 문자를 합쳐서 댓글을 입력한다.

 

위 4가지의 절차를 프로그램으로 자동으로 실행되게끔 제작하였습니다.

뭐 주석으로 나름 친절하게 설명을 달아두었기 때문에 구체적인 설명은 필요없을 것 같기도 합니다.

 

개발자라는 직업은 이럴때 참 좋은거 같습니다.

일일이 수작업으로 해야할 일을, 프로그램으로 만들어서 자동으로 돌릴수 있게도 하고 말이죠~

 

위 프로그램을 제작하기 위해서 필요한 기술및 지식

1. php - 너무나 당연하다... php로 만들었으니까.

2. 스누피 라이브러리 사용방법 - 이건 검색하면 다 나오는 거임.

3. 정규식 - 아무래도 제일 어려운 난관일 것입니다.

 

세월의 무상함과 사람의 삶이라는 것이 어떻게 될 지 모른다는 것이 갑자기 생각나네요...

불과 10년전만 해도 위의 소스코드를 만드는 사람들이 그저 신기하고, 마치 미지의 세계에서 온 외계인인 마냥 어떻게 저런 코드를 머리속에서 만들수 있는거지? 라고 생각했었는데...

그런 일을 이제 제가 아무렇지도 않게 만들고 있는걸 보면 노력으로서 이루지 못할 건 없나 봅니다...

0
0

목록

Facebook Twitter GooglePlus KakaoStory NaverBand
2 Comments

비밀번호 확인

확인
댓글은 자신을 나타내는 '얼굴'입니다. *^^*
등록
자동등록방지 숫자를 순서대로 입력하세요.

댓글수정


글쓰기
검색
번호 제목 이름 날짜 조회
  • 81
    특정 폴더를 돌면서(하위까지) 이미지 퀄리티 조절하고, 이미지 사이즈까지 조절하는 코드
    마스터욱
    조회수 219   25-04-11 18:31
    마스터욱
    25-04-11 18:31
    219
  • 80
    JSON 데이터 DB에 넣을때, 데이터를 이쁘게 해주는 함수(JSON_PRETTY_PRINT)
    마스터욱
    조회수 190   25-02-08 13:45
    마스터욱
    25-02-08 13:45
    190
  • 79
    PHP 로 웹푸시 만들기
    마스터욱
    조회수 243   23-05-11 22:16
    마스터욱
    23-05-11 22:16
    243
  • 78
    FastCGI sent in stderr: "PHP message: PHP Fatal error: Allowed memory size of
    마스터욱
    조회수 186   22-12-04 05:36
    마스터욱
    22-12-04 05:36
    186
  • 77
    window apache2 php7 에서 curl 이 인식되지 않을때 해결방법
    마스터욱
    조회수 177   22-08-08 22:41
    마스터욱
    22-08-08 22:41
    177
  • 76
    exec 사용시에 에러확인 방법
    마스터욱
    조회수 167   22-06-23 01:52
    마스터욱
    22-06-23 01:52
    167
  • 75
    리눅스(우분투) 시스템 모니터링 PHP 오픈소스
    마스터욱
    조회수 152   22-01-10 00:27
    마스터욱
    22-01-10 00:27
    152
  • 74
    json_encode 시에 한글이 깨지는 경우 해결방법
    마스터욱
    조회수 181   21-12-23 05:24
    마스터욱
    21-12-23 05:24
    181
  • 73
    exec 사용시, 에러확인 방법
    마스터욱
    조회수 150   21-12-19 16:08
    마스터욱
    21-12-19 16:08
    150
  • 72
    PHP - PDF 파일 만들기
    마스터욱
    조회수 151   21-12-16 11:23
    마스터욱
    21-12-16 11:23
    151
  • 71
    http_build_query 함수에서 배열처리
    마스터욱
    조회수 170   21-12-07 06:10
    마스터욱
    21-12-07 06:10
    170
  • 70
    http 로 접속할 경우, https 로 포워딩 되도록 하는 소스
    마스터욱
    조회수 162   21-11-16 22:57
    마스터욱
    21-11-16 22:57
    162
  • 69
    exec 함수 사용시, 백그라운드에서 명령어 실행하기
    마스터욱
    조회수 180   21-11-10 04:08
    마스터욱
    21-11-10 04:08
    180
  • 68
    크롤링 라이브러리 스누피(Snoopy) 사용시 노하우 팁!
    마스터욱
    조회수 403   21-10-20 02:24
    마스터욱
    21-10-20 02:24
    403
  • 67
    PHP 숫자 0 을 인식하는 방법
    마스터욱
    조회수 234   21-05-27 14:32
    마스터욱
    21-05-27 14:32
    234
  • 66
    텔레그램 채널 알림(푸시) API
    마스터욱
    조회수 154   21-04-08 02:05
    마스터욱
    21-04-08 02:05
    154
  • 65
    [2] apmsetup 대신에 쓸만한 프로그램, 오토셋(Autoset) [2]
    마스터욱
    조회수 180   21-04-07 16:25
    마스터욱
    21-04-07 16:25
    180
  • 64
    jQuery ezPlus 그누보드 상세페이지 이미지에 적용소스
    마스터욱
    조회수 177   21-03-22 16:34
    마스터욱
    21-03-22 16:34
    177
  • 63
    bitmex API - 주문리스트 가져오기(order list)
    마스터욱
    조회수 192   21-01-03 16:31
    마스터욱
    21-01-03 16:31
    192
  • 62
    bitmex API - 주문하기(order)
    마스터욱
    조회수 203   20-12-31 17:11
    마스터욱
    20-12-31 17:11
    203
글쓰기
검색
  • 1
  • 2
  • 3
  • …
  • 5
  • 다음

Search

개인정보처리방침
마스터욱. All rights reserved.

Close

0 명 접속중
Time Loading...