Python - Requests 모듈
이번엔 파이썬으로 스크립트를 짤 때,
아주 유용하게 응용할 수 있는 requests란 모듈에 대해서 알아보자
requests 모듈을 사용하면 페이로드를 날릴 수 있다.
기본적인 사용방법은 import로 불러온 후,
URL을 get이나 post 방식으로 응답을 받아온다.
http 관련 스크립트를 짤 때, selenium 보다 가벼워서 쓰기가 좋다.
밑 코드를 입력만 한 것으로 웹브라우저에서 해당 url에 접속한 것과 같은 효과를 얻는다.
import requests
url = "http://www.naver.com"
response = requests.get(url)
response.status_code
response.text
response.status_code 를 입력했는데
200의 값을 반환했다면 서버에서 잘 처리되었다는 뜻이다.
그런데, get과 post 방식은 data 전달에 있어 약간의 차이가 있다.
data = {'param1': 'value1', 'param2': 'value'}
res = requests.post(URL, data=data)
그리고 조금 더 복잡한 구조로 POST 요청을 해야할 때가 있다고 한다.
import requests, json
data = {'outer': {'inner': 'value'}}
res = requests.post(URL, data=json.dumps(data))
테스트를 해보기 위해
Pycharm을 켜서 requests_test.py 파일을 새로 생성했다.
GET 방식 테스트
get 방식은 일단 간단히 url 만 있어도 패킷을 보낼 수 있다.
import requests
url = "http://www.naver.com"
response = requests.get(url)
print("status code:", response.status_code)
url 만 적어주고 requests.get에 넣기만 한 코드이다.
실행해보면,
200이 잘뜬다. 서버에 패킷이 잘 전달되었다는 뜻이다.
이렇게 url만이 아닌 parameter 를 같이 전송할 수도 있다.
첫번째 get 방식은 url 뒤에 ? id = "" & pw = "" 처럼 parameter를 붙여서 전송하게 되는데
코드상의 url에 직접 파라미터를 붙여서 넣을 수 있다.
이런식으로 보내면 된다.
두번째 get 방식은 딕셔너리 방식을 이용하는 것이다.
import requests
parameter = {
"a" : "bb",
"b" : 123
}
url = "http://www.naver.com"
response = requests.get(url, params=parameter)
print("status code:", response.status_code)
실행해봤더니, 200이 뜨면서 잘된다.
POST 방식 테스트
테스트 코드를 입력해보자.
get 방식은 url 과 params 가 필요했는데
POST 방식으로 패킷을 보내기 위해서는 url 과 data 가 필요하다.
data 는 딕셔너리 형식으로 두개 정도 생성해주고 url은 아무렇게나 적당한 사이트를 입력했다.
import requests
datas = {
"a" : "bb",
"b" : 123
}
url = "http://www.naver.com"
response = requests.post(url, data=datas)
print("Status code:", response.status_code)
실행해보면 200 이 뜬다.
아까처럼 200의 뜻은 서버까지 패킷이 잘 전달되었다는 뜻이다.
간단하게 requests 의 기본 사용법을 공부해보았는데,
이걸 응용하면
웹 해킹을 할 때 귀찮은 부분들을 자동화할 수 있을 것이다.
밑 소스를 참조하여 작성되었습니다.