• 목록
  • 아래로
  • 위로

requests python에 대한 이미지 검색결과



본래 예정되었던 파이썬 반복문에 관한 강좌는 아니고, 잠깐 Selenium에 관한 글을 적겠습니다.


구글링해보면 Selenium의 세션을 Requests로 보내는 방법에 대한 웹문서는 많지만, 그 반대 경우에 대해서는 제대로 된 서술을 찾기 어려워서 적어봅니다.


물론 어디까지나 제 허접한 수준에서 우여곡절 끝에 발견한 방법이기 때문에, 보다 간명한 다른 방법이 있을 것 같습니다 ^^



굳이 Requests에서 Selenium으로 세션을 전송할 필요가 있는가 하는 생각도 드시겠지만, 요새 Selenium에서의 로그인을 특별히 신경써서 막아놓은 사이트들을 적지 않게 발견할 수 있습니다.


예컨대 Selenium에서 패스워드를 입력하는 것을 막아놓아서 우회적으로 Pyperclip 등 라이브러리를 이용하여 Ctrl+C, V를 해야 하는 경우가 있습니다.


구체적인 우회방법에 대해서는 제가 이전에 허접한 글을 올렸습니다.


참고 : https://studyforus.com/innisfree/584242


이 경우에 Headless 모드에서 구동시키거나, 우분투에서 실행하는 경우에 Ctrl+C, V가 제대로 작동하지 않을 수 있습니다.


따라서 이러한 문제를 해소하고 모든 환경에서 원활하게 로그인 처리를 하기 위하여 다음과 같은 스크립트를 작성하였습니다.



import requests
from selenium import webdriver

driver = webdriver.Firefox()

def transfer_session():
   LOGIN_INFO = {
       'id': user_id,
       'password': user_pw
   }
   s.get('URL')
   s.post('URL/login_check.php', data=LOGIN_INFO)
   driver.get('URL') # 여기에 이 부분이 들어가지 않으면 에러가 발생합니다.
   for c in s.cookies:
       driver.add_cookie({'name': c.name, 'value': c.value, 'path': c.path, 'expiry': c.expires})
   driver.refresh()
   return



간략히 알고리즘을 설명드리면, 우선 Requests로 로그인을 진행한 후에 Selenium 창을 띄운 상태에서 add_cookie를 하고나서 driver.refresh()를 해주는 방식입니다.


(i) Selenium을 미리 띄워놓지 않은 상태에서 쿠키를 보내고 창을 열려고 하거나, (ii) driver.refresh()를 하지 않는 경우에는 "Document is cookie-averse."라는 에러가 발생할 수 있습니다.


결론적으로 주석을 달아놓은 부분을 쿠키를 넘기기 전에 넣어주는 것이 핵심이라고 하겠습니다.


꼭 .refresh()가 아니더라도 Selenium을 미리 띄워놓아야 한다는 의미에서 드리는 말씀이에요.



스포어의 고수님들께서 더 간단한 방법을 알고 계시다면 조언 부탁드리겠습니다 ^^


그럼 즐거운 주말 되세요!

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

당분간 일신상의 사정으로 쪽지나 댓글로 답변을 드리기 어렵습니다. 죄송합니다.

 

CSVpuymXAAAVVpd.jpg

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
29 [디지털포렌식전문가] 제21회 필기시험 합격 후기 9 image 이니스프리 이니스프리 23.10.29.16:11 2475
28 [Python] GIF 파일에 프로그레스바 삽입하기! (Adding progress bar into GIF) image 이니스프리 이니스프리 22.05.14.13:14 12581
27 [Python] 그누보드 자동 글 작성 + 멀티 파일 업로드 스크립트 1 image 이니스프리 이니스프리 21.05.16.09:32 23690
26 0. 행의 분리 및 결합 / 멀티라인 문자열 image 이니스프리 이니스프리 21.04.18.11:53 447
25 [Selenium] proxy를 사용하지 않고 개발자도구에서 Network 탭의 로그를 얻기 image 이니스프리 이니스프리 21.03.06.23:35 1555
24 [번외편 - 한컴한글] 스마트한 문서 작성을 위한 팁 (작성 중) 이니스프리 이니스프리 20.08.08.13:50 493
23 [Requests-HTML] Requests와 비교할 때의 장점! (네이버 뉴스 등 크롤링) 7 image 이니스프리 이니스프리 20.05.14.19:08 1420
22 22. [OpenPyXL] 엑셀 문서 저장하기 / 시트 추가하기 / 셀에 입력하기 14 image 이니스프리 이니스프리 20.02.02.00:46 5577
21 21. [OpenPyXL] 엑셀 문서를 열고 시트에서 셀의 값을 얻기 3 image 이니스프리 이니스프리 20.02.01.23:46 1269
20 [BeautifulSoup] 자식태그를 제거하기 - .decompose() & .extract() 10 image 이니스프리 이니스프리 20.01.16.00:07 9248
19 [python-telegram-bot] 4096자 글자수 제한을 우회하는 방법 image 이니스프리 이니스프리 20.01.12.11:25 2049
18 [Requests] Selenium을 이용한 Cloudflare의 우회 8 image 이니스프리 이니스프리 20.01.08.19:51 6245
17 9. [정리] 파이써닉한 파이썬 문법 팁 for COS Pro image 이니스프리 이니스프리 20.01.04.23:47 1009
16 [번외편] 네이버 동영상에서 자막을 파일로 추출하는 방법 2 image 이니스프리 이니스프리 19.12.25.22:34 5598
15 4. 문자열 처리 (2) - 문자열 조작에 대한 기본함수 및 메서드 1 image 이니스프리 이니스프리 19.12.12.02:27 553
14 6. 리스트와 관련된 기본함수 및 메서드 7 image 이니스프리 이니스프리 19.12.10.21:16 2090
13 3. 문자열 처리 (1) - 문자열 접근 및 검색방법 4 image 이니스프리 이니스프리 19.12.09.20:00 1176
[Selenium] Requests의 session을 Selenium으로 보내기 image 이니스프리 이니스프리 19.12.07.14:17 4666
11 1. 반복문 (1) - while 문 7 image 이니스프리 이니스프리 19.12.06.20:50 2501
10 (序) Python 강좌를 시작하며... 2 image 이니스프리 이니스프리 19.12.05.21:55 494