웹스쿨
php - 스누피(Snoopy)로 자동으로 댓글달기 프로그램 개발 본문
- include_once "./Snoopy.class.php";
- $snoopy = new Snoopy();
- function sendSnoopy(){
- //print_r($data);exit;
- global $snoopy, $data;
- $host = "호스트주소";
- $snoopy->agent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)";
- $snoopy->referer = $host;
- //로그인
- echo "///////////////// 로그인 시작/////////////////////\n";
- $snoopy->httpmethod = "POST";
- $data['form_id'] => $data['id'],
- $data['form_pw'] => $data['pw']
- ));
- $snoopy->setcookies();
- $snoopy->fetch($host);
- echo "///////////////// 로그인 성공/////////////////////\n";
- /*
- $result = $snoopy->results;
- echo "result = {$result}";exit;
- */
- foreach($data['list_array'] as $url => $count){
- echo "///////////////// {$url} 시작/////////////////////\n";
- /*
- $snoopy->fetch($host);
- $result = $snoopy->results;
- echo "result = {$result}";exit;
- */
- $snoopy->fetch($url);
- $result = $snoopy->results;
- //echo "url = {$url}\nresult={$result}";exit;
- //print_r($temp);exit;
- $url_list = $temp[1];
- for($i = 0; $i < $count; $i++){
- //echo $detail_url."\n";exit;
- $bo_table = "";
- $wr_id = "";
- foreach($get as $value){
- if($ttt[0] == "bo_table"){
- $bo_table = $ttt[1];
- }
- else if($ttt[0] == "wr_id"){
- $wr_id = $ttt[1];
- }
- }
- //echo "bo_table = {$bo_table} / wr_id = {$wr_id}";exit;
- //url_page 로 제목, 쿠키url을 알아내자.
- $snoopy->fetch($detail_url);
- $result = $snoopy->results;
- //echo $result;exit;
- //print_r($temp);exit;
- $title = $temp[1] . " 굿굿굿!";
- preg_match('/<div class=\"list-group font-12\"><a class=\"list-group-item break-word\" href=\"(.*?)\" target=\"_blank\">/is', $result, $temp);
- //print_r($temp);exit;
- //echo $cookie_link;exit;
- /*
- echo "
- title = {$title}\n
- cookie_link = {$cookie_link}
- ";
- exit;
- */
- //필요하다면 별도의 쿠키까지
- $snoopy->httpmethod = "GET";
- $snoopy->submit($cookie_link);
- $snoopy->setcookies();
- }
- $snoopy->httpmethod = "POST";
- $data['form_comment'] => $title,
- "w" => "c",
- "bo_table" => $bo_table,
- "wr_id" => $wr_id,
- ));
- echo "url : {$detail_url} / count = {$count} / title = {$title}\n";
- }
- echo "///////////////// {$url} 끝/////////////////////\n";
- //exit;
- }
- }
- $data['form_id'] = "mb_id";
- $data['form_pw'] = "mb_password";
- $data['id'] = "로그인아이디";
- $data['pw'] = "로그인패스워드";
- $data['form_comment'] = "wr_content";
- "게시판리스트1" => 10,
- "게시판리스트2" => 5,
- "게시판리스트3" => 3,
- "게시판리스트4" => 2
- );
- echo "sendSnoopy Start\n";
- sendSnoopy();
스누피(Snoopy) 클래스를 이용한 자동댓글 달기 소스입니다.
실험대상 사이트는 공개할 수가 없으며, 해당 사이트는 그누보드로 제작이 되어 있었음을 알려드립니다.
로직의 순서는 아래와 같습니다.
1. 사이트에 로그인을 한다.
2. 게시판 리스트 페이지에 접근한다.
3. 리스트 페이지에서 각각의 게시판 상세페이지로 이동하는 링크들을 수집한다.
4. 상세페이지에 접근한다.
5. 상세페이지에서 게시글 제목을 추출한다.
6. 상세페이지 제목 + "굿굿굿" 스트링 문자를 합쳐서 댓글을 입력한다.
위 4가지의 절차를 프로그램으로 자동으로 실행되게끔 제작하였습니다.
뭐 주석으로 나름 친절하게 설명을 달아두었기 때문에 구체적인 설명은 필요없을 것 같기도 합니다.
개발자라는 직업은 이럴때 참 좋은거 같습니다.
일일이 수작업으로 해야할 일을, 프로그램으로 만들어서 자동으로 돌릴수 있게도 하고 말이죠~
위 프로그램을 제작하기 위해서 필요한 기술및 지식
1. php - 너무나 당연하다... php로 만들었으니까.
2. 스누피 라이브러리 사용방법 - 이건 검색하면 다 나오는 거임.
3. 정규식 - 아무래도 제일 어려운 난관일 것입니다.
세월의 무상함과 사람의 삶이라는 것이 어떻게 될 지 모른다는 것이 갑자기 생각나네요...
불과 10년전만 해도 위의 소스코드를 만드는 사람들이 그저 신기하고, 마치 미지의 세계에서 온 외계인인 마냥 어떻게 저런 코드를 머리속에서 만들수 있는거지? 라고 생각했었는데...
그런 일을 이제 제가 아무렇지도 않게 만들고 있는걸 보면 노력으로서 이루지 못할 건 없나 봅니다...
https://webschool.kr/?v=board_view&board_key=7&idx=184
에서 작성한 글입니다. 소스코드의 경우 해당 블로그에서 이뿌게 노출이 되지 않을 수 있사오니, 위 링크로 들어오셔서 보시길 바랍니다.
'개발 경험 Tip > PHP' 카테고리의 다른 글
XE에서 로그인 아이디 가져오는 방법 (0) | 2023.03.31 |
---|---|
PHPMailer 를 이용한 email 발송 (0) | 2023.03.31 |
네이버 신디케이션 작업완료 (0) | 2023.03.31 |
그누보드의 토근 소스 문제점 / 대책없는 소스 (0) | 2023.03.31 |
네이버 스마트 에디터 익스(IE)에서 display:none 상태에서 display:block 상태로 변경시 작동안되는 문제 해결법 (0) | 2023.03.31 |