• 목록
  • 아래로
  • 위로

안녕하세요?


requests 라이브러리에서 with requests.Session()에 대한 간단한 질문을 드립니다.


경우에 따라서는 실무적으로 중요할 수도 있겠지만 개인적으로 궁금한 내용에 가까운데요 ^^



예컨대 아래와 같이 with requests.Session() as s: 을 사용하게 되면


session.close()를 하지 않아도 되는 장점이 있겠죠.


1
2
3
4
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를 변경해도 로그인 자체가 끊기지는 않으니깐요.


그런데 이렇게 계속 넣어야 한다면 상당히 비효율적인 것 같다는 생각이 들어서 여쭤보네요~


1
2
3
4
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)



그럼 오늘 일부 지역에서 날씨가 영하로 떨어졌다고 하던데 스포어 회원님들께서도 감기 조심하세요! ^-^


항상 감사드립니다!!


작성자
이니스프리 119 Lv. (2%) 4486740/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 2

title: 황금 서버 (30일)humit
profile image

headers 값을 갱신하면 됩니다.


1
2
3
4
5
6
with requests.Session() as s:
    # 아래와 같이 사용하시면 header 값이 고정되어서 실행됩니다.
    s.headers.update(headers)
    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)



https://github.com/psf/requests/blob/master/requests/sessions.py#L449


1
2
3
4
5
6
7
8
9
10
11
12
13
p.prepare(
            method=request.method.upper(),
            url=request.url,
            files=request.files,
            data=request.data,
            json=request.json,
            # 아래 부분을 통해 self.headers 값을 계속 사용하는 것을 알 수 있습니다.
            headers=merge_setting(request.headers, self.headers, dict_class=CaseInsensitiveDict),
            params=merge_setting(request.params, self.params),
            auth=merge_setting(auth, self.auth),
            cookies=merged_cookies,
            hooks=merge_hooks(request.hooks, self.hooks),
        )




comment menu
2019.11.11. 23:46

신고

"humit님의 댓글"

이 댓글을 신고 하시겠습니까?

이니스프리 작성자 → humit
profile image

번번이 감사합니다 ^-^

s.headers.update(headers) 이런 간단한 방법이 있었군요!

제가 멍청했네요~ ㅠㅠ

라이브러리를 뜯어보면서 공부를 해야 되는 것이군요 ㄷㄷ

그럼 humit 님께서도 점심식사 맛있게 드시고 즐거운 오후 되세요!

comment menu
2019.11.12. 12:54

신고

"이니스프리님의 댓글"

이 댓글을 신고 하시겠습니까?

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [중요] 호스팅 만료와 관련하여 일부 수칙이 변경됩니다. 6 마스터 23.01.14.02:23 31802
공지 [필독] 질문하는 방법 17 마스터 18.02.23.03:09 5470
630 국내 유료 웹호스팅 사이트 추천을 부탁드립니다 14 이니스프리 19.11.16.00:09 388
629 윈도우7 익스플로러11에서 인터넷옵션/시작옵션/마지막 세션의 탭으로 시작이 작동이 안됩니다. 3 kyhsyou 19.11.15.10:54 378
628 구글 애드센스 잘아시는분 있나유? 2 title: 투명 아이콘슬기 19.11.14.23:54 368
627 스포어 호스팅 사용 중에 실수로 반복문을 잘못 돌리면 계정이 정지되나요? ㅠㅠ 2 이니스프리 19.11.14.00:25 661
626 가계부 프로그램 추천 부탁드립니다! 2 이니스프리 19.11.12.23:59 434
625 유튜브에 유튜버 '분류' 또는 '장르'라는 것이 존재하나요?? 2 이니스프리 19.11.12.21:57 489
624 현재 신제품 구매가 가능한 배터리 탈착식 스마트폰에 어떤 것이 있을까요? 이니스프리 19.11.10.22:18 346
623 [SSD] Micron 1100 vs Samsung 860 QVO 어떻게 생각하시는가요? 7 image 이니스프리 19.11.09.22:52 403
파이썬에서 requests.Session()에 대한 간단한 질문을 드립니다 ^^ 2 이니스프리 19.11.09.21:45 2103
621 리눅스에서 랜섬웨어 감염 원인이 무엇일까요? 14 NoYeah 19.11.08.17:33 397
620 명함 제작 업체 추천 부탁드립니다! 2 갱생협스 19.11.08.16:57 582
619 피규어샵 방문과 관련하여 질문 드립니다 6 이니스프리 19.11.06.21:32 400
618 싸이월드 미니홈피 크롤링 과정에서 swf 파일 다운로드와 관련하여 질문 드립니다 ㅠㅠ 6 이니스프리 19.11.05.00:45 1002
617 갤럭시노트10+ 구매해도 괜찮을까요?? 2 이니스프리 19.11.03.16:03 498
616 PC 원격접속을 위한 스마트폰 앱 추천을 부탁드립니다. 14 이니스프리 19.11.02.22:21 353
615 히어로 무비 추천 부탁드립니다! 30 이니스프리 19.10.29.13:48 383
614 크롤링한 어절 또는 문장의 유사성을 구하는 방법에 대해 질문 드립니다 9 이니스프리 19.10.26.22:22 560
613 무접점 방식의 키보드의 윤활과 관련하여 질문 드려요~! 이니스프리 19.10.25.22:57 516
612 스마트폰 지문인식 과정에서 에러가 덜 발생하는 방법을 질문 드립니다 6 이니스프리 19.10.25.20:08 665
611 JS 반복 처리에 대한 로컬저장문제와 PHP의 Request의 비동기처리 2 Hanam09 19.10.20.23:10 496