제 목

Similar documents
Week13

Web Scraper in 30 Minutes 강철

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

게시판 스팸 실시간 차단 시스템

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

로거 자료실

Microsoft Word - src.doc

PowerPoint Template

SBR-100S User Manual

3장

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi

gcloud storage 사용자가이드 1 / 17

Facebook API

PowerPoint 프레젠테이션

Secure Programming Lecture1 : Introduction

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

Microsoft PowerPoint - additional01.ppt [호환 모드]

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

아래 항목은 최신( ) 이미지를 모두 제대로 설치하였을 때를 가정한다

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라.

TTA Journal No.157_서체변경.indd

Microsoft PowerPoint - web-part01-ch10-문서객체모델.pptx

Microsoft PowerPoint 웹 연동 기술.pptx

슬라이드 1

14-Servlet

PowerPoint Template

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

Microsoft PowerPoint 세션.ppt

PowerPoint 프레젠테이션

2파트-07

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

JAVA Bean & Session - Cookie

PowerPoint 프레젠테이션

Windows 8에서 BioStar 1 설치하기

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

ThisJava ..

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

IP Cam DDNS 설정설명서(MJPEG) hwp

Polly_with_Serverless_HOL_hyouk

SproutCore에 홀딱 반했습니다.

Microsoft Word - junior.docx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

슬라이드 1

1. 배경 업무 내용이나 개인정보가 담긴 청구서 등을 메일로 전달 시 중요한 정보가 유출되는 경우가 발생하고 있으며, 이에 따른 메일 암호화 솔루션을 도입하고 있으나 기존 ActiveX를 기반으로 한 플러그인 방식은 여러 가지 제약으로 인해 사용성이 저하되고, 고객 대

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES ActiveX 컴포넌트가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax

데이터 시각화

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

PowerPoint 프레젠테이션

서현수

PowerPoint 프레젠테이션

Microsoft PowerPoint - aj-lecture1.ppt [호환 모드]

BEA_WebLogic.hwp

Javascript

9 차시고급위젯다루기 1 학습목표 날짜 / 시간과관련된위젯을배운다. 웹뷰를사용하여간단한웹브라우저기능을구현한다. 매니패스트파일의설정법을배운다. 2 확인해볼까? 3 날짜 / 시간위젯 1) 활동하기 활동개요

Microsoft PowerPoint Python-Function.pptx

Data Provisioning Services for mobile clients

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

MaxstAR SDK 2.0 for Unity3D Manual Ver

Cookie Spoofing.hwp

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

슬라이드 1

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

다음웹툰광고상품소개_ _v1.2

윈도우시스템프로그래밍

뇌를 자극하는 JSP & Servlet 슬라이드

12. OAuth 2.0 으로사용자관리하기 12.1 들어가며 대부분의회사나조직은직원과고객데이터베이스를가지고있습니다. 쓰리래빗츠를도입하면 일부데이터베이스를이중으로관리해야하는불편함에직면합니다. 이문제를해결하기위해서 쓰리래빗츠는 OAuth 2.0 으로사용자를관리하는기능을제공

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

설명 Description 상세정보 네이버에서운영하는서비스중하나인쥬니어네이버 ( 이하쥬니버 ) 에서는쥬니버서비스와 관련하여도움을주기위한 [ 그림 1] 과같은플래시애플리케이션이서비스되고있다.[2] [ 그림 1] 쥬니어네이버에서서비스중인쥬니버도우미플래시애플리케이션 해당플래

Inside Android Applications

Lab-Buildamatrix Copyright 2018 document created by Introduction PDF 파일다운로드 Machin Learning의두번째랩은 Pandas와 Numpy를활용하여 Rating M

대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주

PowerPoint Presentation

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

PowerPoint 프레젠테이션

Chapter #01 Subject

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

슬라이드 1

한국에너지기술연구원 통합정보시스템설치방법설명서 한국에너지기술연구원 지식정보실 - 1 -

쉽게 풀어쓴 C 프로그래밍

4. #include <stdio.h> #include <stdlib.h> int main() { functiona(); } void functiona() { printf("hihi\n"); } warning: conflicting types for functiona

*2008년1월호진짜

슬라이드 1

04장

Lab #4 - 화씨변환기 (fahrenheit_converter) Copyright 2015 document created by Introduction 4 주차강의 Lab Assignment 입니다. 이번 lab 은더짧고더

Microsoft Outlook G Suite 가이드

슬라이드 1

[ 스프링부트, 그래들, HelloWorld]STS,Gradle 설치및 WEB MVC 심플예제 간단히 STS 및 Gradle Support Plugin 을설치하여간단히 Spring Boot, Gradle Web 응용프로그램을작성해보자. 0. STS 및 Gradle Su

슬라이드 1

adfasdfasfdasfasfadf

쉽게 풀어쓴 C 프로그래밍

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

PowerPoint Template

Transcription:

기술문서 14. 03. 06. 작성 파이썬을활용한웹크롤러제작 소속 : 인천대학교 OneScore 작성자 : 최창원 메일 : qwefgh90@naver.com 1. 소개 p.2 2. 라이브러리소개 p.2 3. 샘플예제 p.3 가. 로그인예제 p.3 나. 쿠키활용예제 p.3 다. headless browser(phantomjs) p.3 4. 활용방안 p.8 5. 참조 p.9

1. 소개 가. 웹크롤러란? 1) 웹크롤러란월드와이드웹을탐색하여원하는정보를얻어내거나기억시킨동작을하는컴퓨터프로그램이다. 주로웹페이지크롤링통해직접접근해서정보를빠르게수집하거나자동이메일수집, 웹유지관리를위해사용되기도한다. 검색엔진에서는크롤링을통해정보를찾은후색인과정을통해데이터를수집한다. 나. 웹크롤러제작을위한준비물 1) 웹크롤러를제작하기위해선 HTTP 프로토콜에대한지식이조금필요하다. 제작언어로는어떤언어든상관없지만본문서에서는파이썬 1) 언어를활용하여제작할것이다. 2) 파이썬라이브러리인 BeautifulSoup, requests, selenium등을사용하면웹크롤링을쉽게할수있다. 3) 웹표준을따르는 headless Webkit 2) 이다. 자바스크립트를사용할수있으며 DOM, CSS, JSON, SVG등을컨트롤할수있다. 2. 라이브러리소개 가. requests 3) 1) HTTP 프로토콜조작을유연하게할수있고사용이쉬운파이썬라이브러리이다. urllib2, urllib등여러개로나눠진모듈보다프로토콜조작을쉽고간단하게할수있다. 나. BeautifulSoup 4) 1) HTML이나 XML같은 Markup language 에서 Node의속성이나값들을쉽게가져오거나수정할수있는파이썬라이브러리이다. 다. selenium 5) 1) 브라우저와드라이버로연결되어브라우저에서하는작업들을자동화시킬수있다. selenium은웹인터페이스로동작하며많은브라우저가 selenium과호환이되고 PhantomJS와도호환이된다.

3. 샘플예제 가. 로그인예제 (POST 요청 ) 1) 사전조사 http://hi-bogo.net 로그인후 WireShark에서로그인에요청할 URL과필요한필드를확인. 요청방식 : POST 요청할페이지 : http://hi-bogo.net/cdsb/login_process.php 로그인에필요한정보 : mode=login&kinds=outlogin&user_id= 아이디 &passwd= 비밀번호 2) 샘플소스 (afterlogin.html 에서로그인성공여부를확인할수있다 )

# coding: utf-8 import requests as rq hibogo_url="http://hi-bogo.net/" #LOGIN URL h_login_url="http://www.hi-bogo.net/cdsb/login_process.php" h_id = "yourid" h_passwd = "yourpwd" #hibogo_login function (POST) (mode=login&kinds=outlogin&user_id=qwefgh90&passwd=qwefgh90) def hibogo_login(): post_bd = {'mode':'login','kinds':'outlogin','user_id':h_id,'passwd':h_passwd} rs = rq.post(h_login_url,data = post_bd) h =rs.headers c = rs.content a=open('afterlogin.html','wb');a.write('<!doctype html><head><meta charset=\"utf-8\"></head>');a.write(c);a.close() return True if name ==' main ': hibogo_login() pass 나. 쿠키활용예제 1) 사전조사 Wireshark 를통해 HTTP Request, Response 필드에쿠키값존재여부확인대상도메인 : http://www.kitribob.kr 요청방식 : POST 요청할페이지 : http://www.kitribob.kr/member_k/login_check.jsp 로그인에필요한정보 : callback=dologin_end&loginid=yourid&passwd=yourpassword

2) 샘플소스 # coding: utf-8 # by chang import os,sys,re import requests as rq import string url = 'http://www.kitribob.kr/member_k/login_check.jsp' value = {'callback':'dologin_end','loginid':'onescore','passwd':'11223344'} response = rq.post(url,data=value) h= response.headers bd = response.content cookie = h['set-cookie'] #cookie 값을확인할수있다. print cookie headers= {'cookie':cookie} #cookie를사용하여로그인세션유지가능 #headers 방법 ( 이게더편리함 ) Chrome, IE에서톰캣웹서버에접속할경우클라이언트측에서로그인하기전미리세션 ( 쿠키 ) 6) 을할당받기때문에로그인후서버로부터오는 Response header에는 set-cookie 필드 7) 에서세션값이따로포함되어오진않는다. 파이썬에서로그인을바로요청할경우서버측에서세션값을생성하여준다. 즉 JSESSIONID 를보내지않을경우서버 "set-cookie" 필드를통해쿠키값을전해주게된다.

다. headless browser(phantomjs) 를활용한 Daum 로그인 & 쿠키값핸들링 1) 샘플코드 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait # available since 2.4.0 from selenium.webdriver.support import expected_conditions as EC # available since 2.26.0 daum_url="http://www.daum.net" d_id = "" d_passwd = "" def daum_login(): driver = webdriver.phantomjs() driver.get(daum_url) driver.set_window_size(1024,768) idinput = driver.find_element_by_id("id") idinput.send_keys(d_id) # 아이디입력 driver.find_element_by_id("inputpwd").send_keys(d_passwd) # 비밀번호입력 driver.save_screenshot('daum_before_login.png') login_button = driver.find_element_by_id("loginsubmit") login_button.click() # 버튼클릭 idinput.submit() # 요소에서 Submit 호출 driver.get(daum_url) driver.save_screenshot('daum_login.png') driver.get("http://mail2.daum.net/hanmailex/top.daum?") driver.save_screenshot('daum_mail.png') click(), submit() 중하나의함수만시도해보았지만로그인에계속실패하였다. click() 함수는버튼노드를클릭하는행동을하는함수이고 submit() 함수는 form태그에둘러쌓인노드에서호출할수있다. 그후 form태그를찾고 submit을호출하는행동을한다. click(),submit() 의기능상차이는없는것같지만둘중하나가동작하지않을경우두개의함수를같이호출해서해결할수있는것같다.

<Daum 로그인전폼데이터스크린샷 > <Daum 로그인후스크린샷 >

<Daum 메일접속스크린샷 > 2) 샘플코드2 ( 쿠키값핸들링 ) def getkitriphantom(): driver = webdriver.phantomjs() driver.get(testurl3) cookies = {'name':'jsessionid','value':'70ec4b2594509c4703257525a7de6dfa'} driver.add_cookie(cookies) # 쿠키추가 driver.get(testurl2)... for cookie in driver.get_cookies(): # 쿠키정보확인 print "%s -> %s" % (cookie['name'], cookie['value'])... driver.delete_cookie(' utma') # utma 키값삭제 위와같은형태로팬텀 JS 에쿠키값을변경할수있다. 4. 활용방안 많은포탈에선웹 API를제공해준다. 오히려크롤링을위해파이썬을배우는것보다웹 API로다양한동작들을구현하는것이시간이절약될수도있다. 필자는푸쉬알림기능을같이사용하여웹툰업데이트푸시알림, 영화티켓예매, 공지사항크롤링이나해볼생각이다.

5. 참조 https://docs.python-requests.org/en/latest/# (Requests) http://docs.seleniumhq.org/docs/03_webdriver.jsp#selenium-webdriver http://www.crummy.com/software/beautifulsoup/bs4/doc/#beautiful-soup-documentation Web Crawling Lecture with PhantomJS of BoB https://developers.google.com/webmasters/control-crawl-index/docs/getting_started?hl=ko 1) 파이썬은스크립트기반언어로적은량의코드로많은작업을할수있어서생산성이매우높은언어이다. 2) headless Webkit 이란기본브라우저와같은기능을하면서더빠르게작업을처리할수있으며 GUI 를포함하지않은브라우저이다. 3) http://docs.python-requests.org/en/latest, http://01073144993.tistory.com/153 에자세한정보 4) http://www.crummy.com/software/beautifulsoup/bs4/doc/#beautiful-soup-documentation, http://01073144993.tistory.com/154 에자세한정보 5) http://docs.seleniumhq.org/docs/03_webdriver.jsp#selenium-webdriver,http://01073144993.tistory.com/155 에자세한정보 6) http://lng1982.tistory.com/143 7) http://en.wikipedia.org/wiki/http_cookie