태그 데이터 뽑기


from bs4 import BeautifulSoup


html = """<html><head><title>title name</title></head><body><p>test</p></body></html>"""


soup = BeautifulSoup(html, 'lxml')

tag_title = soup.title


print(tag_title.text) #title name

print(tag_title.string) #title name

print(tag_title.name) #title


속성 데이터


from bs4 import BeautifulSoup


html = """<html><head><title class = "t" id = "title">title</title></head><body><p>test</p></body></html>"""


soup = BeautifulSoup(html, 'lxml')

tag_title = soup.title


print(tag_title.attrs) #{'id' : 'title', 'class' : ['t']}

print(tag_title['class']) # ['t']

print(tag_title['id']) #title


get을 이용하여 속성에 접근하면 에러를 방지할 수 있다.

ex) tag_title.get('class')


태그의 text와 string 속성


tag_title.text는 하위 태그들에 대한 값 출력 가능, tag_title_string은 자신의 태그 안의 내용만 출력



부모, 자식, 형제 태그


from bs4 import BeautifulSoup


html = """<html><head><title class = "t" id = "title">title</title></head><body><p><span>test</span></p></body></html>"""


soup = BeautifulSoup(html, 'lxml')

tag_content1 = soup.p.contents

tag_content2 = soup.p.children

tag_content3 = soup.p.parent

tag_content4 = soup.p.parents

#tag_content5 = soup.p.previous_sibling 앞의 형제 태그

#tag_content6 = soup.p.next_sibling 뒤의 형제 태그


print(tag_content1) #[<span>test</span>]

print(tag_content2) #iterator 객체로 반환되기 때문에 반복문으로 출력가능

print(tag_content3) #<p><span>test</span></p>

print(tag_content4) #iterator 객체로 반환되기 때문에 반복문으로 출력가능






'웹 서버 > 크롤러' 카테고리의 다른 글

re활용하기  (0) 2018.05.16
bs4 함수  (0) 2018.05.16
urllib 모듈  (0) 2018.05.15
requests 모듈  (0) 2018.05.15
requests VS urllib  (0) 2018.05.15

다양한 정보 확인


from urllib.request import urlopen, Request


url = "https://sang-gamja.tistory.com/"


req = request(url)

page = urlopen(req)


print(page)

print(page.code)

print(page.headers)

print(page.url)

print(page.info().get_content_charset( ))


데이터 요청


from urllib.request import urlopen, Request

import urllib


url = "https://sang-gamja.tistory.com/"


data = {'key1' : 'value1', 'key2' : 'value2'}

data = urllib.parse.urlencode(data)

data = data.encode('utf-8')


print(data)


req_post = Request(url, data=data, headers={})


page = urlopen(req_post)


print(page)


urllib는 Request( )함수를 이용하여 요청 객체를 만들 때 두 번째 인자에는 데이터, 세번째 인자에는 헤더가 들어갑니다. 만약 두 번째 인자 값이 존재한다면 POST 요청, 존재하지 않는다면 GET 요청을 보냅니다. 두번째 인자의 존재에 따라서 GET인지 POST인지가 결정됩니다.


'웹 서버 > 크롤러' 카테고리의 다른 글

bs4 함수  (0) 2018.05.16
bs4  (0) 2018.05.16
requests 모듈  (0) 2018.05.15
requests VS urllib  (0) 2018.05.15
python 상속  (0) 2018.05.15

쿼리스트링 생성


import request as rq


url = "https://sang-gamja.tistory.com/"


res = rq.get(url, params = { "key1" : "value1", "key2" : "value2"})


print(res.url)



json 모듈과 str 차이점


import json


dict1 = { 'key1' : 'value1', 'key2' : 'value2'}


print(json.dumps(dict1)) #{ "key1" : "value1" , "key2" : "value2" }

print(str(dict1))            #{ 'key1' : 'value1' , 'key2' : 'value2' }


헤더 설정하기


import requests as rq

url = "https://sang-gamja.tistory.com/"


res = rq.get(url, headers = {"User-Agent" : "Mozilla/5.0 {Macintosh; Intel Mac OS X 10_12_5) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36"})


print(res.url)


requests 오류 처리 방법


import requests as rq


url = "https://sang-gamja.tistory.com"


try:

res = rq.get(url)

print(res.url)

except rq.exceptions.HTTPError:

print("HTTP 에러발생")



'웹 서버 > 크롤러' 카테고리의 다른 글

bs4 함수  (0) 2018.05.16
bs4  (0) 2018.05.16
urllib 모듈  (0) 2018.05.15
requests VS urllib  (0) 2018.05.15
python 상속  (0) 2018.05.15

requests 모듈과 urllib 모듈은 굉장히 비슷한 역할을 합니다.

하지만 많은 사람들이 python에서는 requests 모듈을 사용하고 있습니다.

그렇다면 차이점에 대해서 알아보겠습니다.


1. 데이터를 보낼때 requests는 딕셔너리 형태, urllib는 인코딩하여 바이너리 형태로 전송합니다.

2. requests는 요청 메소드(get, post)를 명시하지만 urllib는 데이터의 여부에 따라 get과 post 요청을 구분합니다.

3. 없는 페이지 요청시 requests는 에러를 띄우지 않지만 urllib는 에러를 띄웁니다.

'웹 서버 > 크롤러' 카테고리의 다른 글

bs4 함수  (0) 2018.05.16
bs4  (0) 2018.05.16
urllib 모듈  (0) 2018.05.15
requests 모듈  (0) 2018.05.15
python 상속  (0) 2018.05.15

상속은 이미 만들어진 클래스의 기능을 가져다 쓰기를 위함이다.


class people:

people_count = 0


def __init__(self):

print("사람 생성")

people.peolpe_count += 1


def move(self):

print("사람 이동")


class car(people):

def __init__(self):

print(" 자동차 생성 ")

super(car, self).__init__( )


class airplane(people):

def __init__(self):

print(" 비행기 생성 ")

super(airplane, self).__init__( )


car1 = car()

car2 = car()


car1.move()

print(people.people_count)


super(클래스명, self).__init__( )을 자식 생성자에 넣어주면 자식생성자가 호출될 때 마다 부모 생성자를 호출한다.

'웹 서버 > 크롤러' 카테고리의 다른 글

bs4 함수  (0) 2018.05.16
bs4  (0) 2018.05.16
urllib 모듈  (0) 2018.05.15
requests 모듈  (0) 2018.05.15
requests VS urllib  (0) 2018.05.15

정보보안기사 11회 필기를 합격했습니다.

아마 많은 사람들이 보안기사가 어렵다는 생각을 많이 하고 계시고 진입장벽이 높다고 생각하시지만 생각보다 암기를 하고 조금의 노력만 있으면 누구나 합격이 가능하다고 생각합니다. 

필기는 특히 완벽한 이해보다는 약간의 개념을 두루두루 알고 가시면 무난하게 합격할 수 있을 것 같습니다.

처음이시거나 자신없으신 분도 누구나 합격 가능할 시험이니 겁먹지 말고 도전해 보시는 것도 좋을 것 같습니다!

 - 참고로 독학을 약 한달정도 해서 합격했습니다!

ESP(Extended Stack Pointer)

: 현재 스택의 가장위에 있는 데이터를 가리키는 포인터, 다음에 pop 했을 시 나갈 데이터의 위치


EBP(Extended Base Pointer)

: 현재 스택에 가장 밑의 데이터 위치를 가리키는 포인터, 새로운 함수가 호출될 때마다 EBP 레지스터 값이 지금까지 사용했던 스택의 제일 윗부분보다 위에 위치하여 새로운 스택을 시작함. 새로운 함수호출, 또는 실행중인 함수의 종료시 값의 변화가 있음.

'컴퓨터 관련 정보' 카테고리의 다른 글

idapython 7.4 바뀐 API 비교 목록  (1) 2019.12.03
정규표현식  (0) 2018.01.09
Google검색  (0) 2017.12.28
Ascii 코드표  (0) 2017.09.23
url code 표  (0) 2017.09.18

1. Packet Sniffing

: tcpdump, snoop, sniff 등과 같은 네트워크 모니터링 툴을 이용해 네트워크 내에 돌아다니는 패킷의 내용을 분석하여 정보를 알아내는 것이다. 네트워크에 연동되어 있는 호스트 뿐만 아니라 외부에서 내부 네트워크로 접속하는 모든 호스트가 그 대상이 된다.


2. IP Spoofing

: 인터넷 프로토콜인 TCP/IP의 구조적 결함, 즉 TCP 시퀀스 번호, 소스 라우터의 소스 주소를 이용한 인증 매커니즘 등을 이용한 방법이다. 인증기능을 가지고 있는 시스템에 침입하기 위하여 해당 시스템 호스트로 위장하는 방법이다.


3. Trap Door

: OS나 대형 응용 프로그램을 개발하면서 전체 시험을 실행할 때 발견되는 오류를 정비나 유지보수를 핑계삼아 컴퓨터 내부의 자료를 뽑아가는 수법이다.


4. DDoS(Distributed Denial of Service)

: DDoS는 분산된 해킹 프로그램으로 서비스를 요청하여 서비스 자원을 고갈시키는 방식으로 서비스 거부를 유발하는 공격기법이다. DDoS 공격대상은 애플리케이션, 서버, DBMS, 네트워크 인프라 등 모든 것을 대상으로 한다.


5. Asynchronous Attacks

: 컴퓨터 중앙처리장치 속도와 입출력 장치의 속도가 다른 점을 이용하여 멀티 프로그래밍을 할 때에 체크 포인트를 써서 자료를 입수하는 방법이며, 사용하기 쉬우면서도 효과적이다. 미리 작성해둔 침투 프로그램으로 시스템 운영자를 속인 채 해킹하는 방법이다.


6. Opt Out

: 명확하게 참여를 거부하는 것이다. 주로 마케팅 프로그램등에서 사용되는 방식으로, 원래 목적 이외의 용도로 개인정보를 사용하는 등의 행동이 사용자가 거부하기 전까지는 이루어 질 수 있다는 내용이다.


7. Opt In

: 확실하게 참여에 동의하는 것이다. 주로 마케팅 프로그램 등에서 사용되는 방식으로, 원래 목적 이외의 용도로 개인정보를 사용하는 등의 행동이 사용자의 명백한 동의가 있기 전에는 이루어 질 수 없다는 내용이다.


8. 무작위 공격(Brute Force Attack)

: 정확한 키를 찾을 때까지 각각의 가능한 키를 입력하여 시도하는 공격유형으로, 평균적으로 키스페이스에 있는 키의 절반만 시도하면 성공할 확률이 높다.


9. 크래킹(Cracking)

: 인가를 받지 않고 컴퓨터 시스템에 접근하려고 시도하는 행위이다.


출처: 이기적 정보보안기사 실기이론서

'정보보안기사 > 정보보안기사 실기' 카테고리의 다른 글

위험관리 및 분석  (0) 2018.05.24
DNS 서버  (0) 2018.05.23
정보보안기사 실기 보안용어6  (0) 2018.04.14
정보보안기사 실기 보안용어5  (0) 2018.04.13
정보보안기사 실기 보안용어4  (0) 2018.04.13

+ Recent posts