Security Engineer 2022. 11. 14. 21:00

4.7 Requests

Python Standard Library 사용해본다.

Pyhon Standard Library 에 없는 것은 pypi 에서 찾을 수 있다.

pypi - 다른 사람이 만든 project 나 module 을 모아둔 곳.

https://pypi.org/

 

PyPI · The Python Package Index

The Python Package Index (PyPI) is a repository of software for the Python programming language.

pypi.org

 

requests 를 검색해서 사용할 예정이다.

reqeusts는 user의 python 코드에서 웹사이트로 request 보내는걸 할수 있게 해준다.

request 란 무엇인가?

예를 들어 내가 구글로 이동하는게 request 이다.

내 브라우저는 구글 서버에 reqeust 를 보내고 구글 서버는 나한테 웹사이트를 보내준다.

requests 는 이걸 가능하게 해준다.

cmd 창을 열고 python -m pip install requests 를 입력하여 requests 설치

from requests import get

requests 에서 get 을 가져온다

get 은 이동한 다음에 website 를 가져오는 function 이다.

4.8 status code

get function을 사용하여 URL을 가져와본다.

get function은 response 를 return 해준다.

response 는 웹사이트의 응답이다.

function 이 무언가를 return 해주기 때문에 user 는 그 값을 가져온다.

user 는 그걸 변수(variable)로 받아야 한다.

그러므로 response 라는 변수를 만들어서 받는다.

response 는 그저 변수일뿐 다른이름으로 만들어도 된다.

from requests import get

websites = (
    'google.com',
    'https://airbnb.com',
    'facebook.com',
    'https://naver.com'
)

for website in websites:
    if not website.startswith('https://'):
        website = f"https://{website}"
    response = get(website)
    print(response)

출력값:

<Response [200]>

<Response [200]>

<Response [200]>

<Response [200]>

200 은 웹사이트가 성공적으로 응답했다는 뜻이다.

  • 1xx(정보) : 요청을 받았으며 프로세스를 계속 진행합니다.
  • 2xx(성공) : 요청을 성공적으로 받았으며 인식했고 수용하였습니다.
  • 3xx(리다이렉션) : 요청 완료를 위해 추가 작업 조치가 필요합니다.
  • 4xx(클라이언트 오류) : 요청의 문법이 잘못되었거나 요청을 처리할 수 없습니다.
  • 5xx(서버 오류) : 서버가 명백히 유효한 요청에 대한 충족을 실패했습니다.

인터넷은 HTTP protocol 에 기반하고 있다.

컴퓨터들이 서로 소통하는 방식은 HTTP request 이다.

그래서 request가 정상인지 아닌지 판별해야하는데

그때 사용하는게 HTTP 상태코드 이다.

메서드중 status_code(상태코드) 를 출력해주는 메서드를 사용한다.

from requests import get

websites = (
    'google.com',
    'https://airbnb.com',
    'facebook.com',
    'https://naver.com'
)

for website in websites:
    if not website.startswith('https://'):
        website = f"https://{website}"
    response = get(website)
    print(response.status_code)

 

출력값:

200

200

200

200

이번에는 상태코드(status_code) 가 정상이면 ok 아니면 not ok 라는 구문을 출력해본다.

from requests import get

websites = (
    'google.com',
    'https://airbnb.com',
    'facebook.com',
    'https://naver.com'
)

for website in websites:
    if not website.startswith('https://'):
        website = f"https://{website}"
    response = get(website)
    
    if response.status_code == 200:
        print(f"{website} is OK")
    else:
        print(f"{website} not OK")

출력값:

https://google.com is OK

https://airbnb.com is OK

https://facebook.com is OK

https://naver.com is OK

OK 또는 Fail 같은 응답을 하는 dictionary를 만들어본다.

results 라는 dictionary를 만든다.

get(website)를 통해서 response 를 받게되면

results dictionary 안에 새로운 entry를 추가한다.

results dictionary에 상태코드가 정상인( 응답이 잘 되는 웹사이트 ) 를 추가한다.

result[website]를 사용해서.

from requests import get

websites = (
    'google.com',
    'https://airbnb.com',
    'facebook.com',
    'https://naver.com'
)

results ={}

for website in websites:
    if not website.startswith('https://'):
        website = f"https://{website}"
    
    response = get(website)
    
    if response.status_code == 200:
        results[website] = "OK"
    else:
        results[website] = "FAILED"

print(results)

 

 

HTTP 상태 코드 정리 출처

https://www.whatap.io/ko/blog/40/