- 2
- 이니스프리
- 조회 수 2034
안녕하세요?
requests 라이브러리에서 with requests.Session()에 대한 간단한 질문을 드립니다.
경우에 따라서는 실무적으로 중요할 수도 있겠지만 개인적으로 궁금한 내용에 가까운데요 ^^
예컨대 아래와 같이 with requests.Session() as s: 을 사용하게 되면
session.close()를 하지 않아도 되는 장점이 있겠죠.
with requests.Session() as s: first_page = s.get('https://www.clien.net/service') LOGIN_INFO = {**LOGIN_INFO, **{'_csrf': csrf['value']}} login_req = s.post('https://www.clien.net/service/login', data=LOGIN_INFO)
그런데 header에 user-agent 같은 것을 다음과 같은 방식으로 넣었다고 가정하면요.
headers = {'Accept-Language': 'ko-KR,ko;q=0.9,en-US', 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'}
user-agent를 검사하는 사이트에서는 이렇게 get 또는 post 요청을 날릴 때마다 headers = headers를 계속 넣어줘야 아무런 문제가 발생하지 않을까요?
아니면 한 번 headers를 넣어주면 그 상태가 그대로 유지되는 것일까요?
간단히 테스트해보니 한 번 넣어줘도 별 문제가 없는 것 같은데 보편적으로 그런 것인지는 잘 모르겠네요.
이론적으로(?) 생각해보면 session이란 것은 상태정보를 웹 서버에 저장하는 것으로서 user-agent와는 직접적인 연관이 있지 않을 것 같은데요.
예컨대 브라우저의 확장 프로그램을 이용하여 user-agent를 변경해도 로그인 자체가 끊기지는 않으니깐요.
그런데 이렇게 계속 넣어야 한다면 상당히 비효율적인 것 같다는 생각이 들어서 여쭤보네요~
with requests.Session() as s: first_page = s.get('https://www.clien.net/service', headers = headers) LOGIN_INFO = {**LOGIN_INFO, **{'_csrf': csrf['value']}} login_req = s.post('https://www.clien.net/service/login', data=LOGIN_INFO, headers = headers)
그럼 오늘 일부 지역에서 날씨가 영하로 떨어졌다고 하던데 스포어 회원님들께서도 감기 조심하세요! ^-^
항상 감사드립니다!!
headers 값을 갱신하면 됩니다.
https://github.com/psf/requests/blob/master/requests/sessions.py#L449