• 목록
  • 아래로
  • 위로

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. (2%) 4185130/115200000EXP

Make StudyForUs Great Again!

 

CSVpuymXAAAVVpd.jpg

댓글 0

권한이 없습니다.
번호 제목 글쓴이 날짜 조회 수
29 [번외편 - 구글뉴스] 리뉴얼된 구글뉴스에서 RSS 피드를 생성하는 방법 6 image 이니스프리 이니스프리 18.10.07.17:58 3671
28 [번외편 - 아미나] 그누보드/아미나에서 게시글의 날짜를 최종수정일로 변경하고, 목록스킨 및 위젯을 최종수정일 순으로 정렬하기 2 image 이니스프리 이니스프리 18.11.11.22:36 2688
27 [번외편 - 법률] 현행 저작권법 제30조(사적이용을 위한 복제)에 대하여 - 음원 다운로더의 처벌과 관련하여 6 이니스프리 이니스프리 18.12.07.14:16 1433
26 [번외편 - 아미나] 아미나의 회원 이미지와 관련하여 x2 3 image 이니스프리 이니스프리 18.12.10.19:57 860
25 [번외편 - 아미나] Basic Youtube Title Widget 1.0에서 처음에 엑박으로 뜨는 경우의 해결책 3 image 이니스프리 이니스프리 18.12.15.23:02 900
24 [Selenium] Selenium에서 send_keys를 막아놓은 경우 해결책 이니스프리 이니스프리 19.07.04.05:52 4858
23 [번외편 - 유튜브] Youtube API를 이용하거나 또는 이용하지 않고 채널ID를 추출하는 방법 2 image 이니스프리 이니스프리 19.07.16.17:55 2922
22 [번외편 - 법률] 나무위키의 서술 중 법률용어의 사용에 있어 바로잡아야 할 부분 image 이니스프리 이니스프리 19.07.17.22:44 521
21 [Pillow] 파이썬 Pillow 라이브러리를 이용하여 이미지의 배경을 transparent하게 만들기 11 image 이니스프리 이니스프리 19.08.04.13:40 7995
20 (序) Python 강좌를 시작하며... 2 image 이니스프리 이니스프리 19.12.05.21:55 646
19 1. 반복문 (1) - while 문 7 image 이니스프리 이니스프리 19.12.06.20:50 2659
[Selenium] Requests의 session을 Selenium으로 보내기 image 이니스프리 이니스프리 19.12.07.14:17 4920
17 3. 문자열 처리 (1) - 문자열 접근 및 검색방법 4 image 이니스프리 이니스프리 19.12.09.20:00 1368
16 6. 리스트와 관련된 기본함수 및 메서드 7 image 이니스프리 이니스프리 19.12.10.21:16 2222
15 4. 문자열 처리 (2) - 문자열 조작에 대한 기본함수 및 메서드 1 image 이니스프리 이니스프리 19.12.12.02:27 756
14 [번외편] 네이버 동영상에서 자막을 파일로 추출하는 방법 2 image 이니스프리 이니스프리 19.12.25.22:34 5971
13 9. [정리] 파이써닉한 파이썬 문법 팁 for COS Pro image 이니스프리 이니스프리 20.01.04.23:47 1154
12 [Requests] Selenium을 이용한 Cloudflare의 우회 8 image 이니스프리 이니스프리 20.01.08.19:51 6600
11 [python-telegram-bot] 4096자 글자수 제한을 우회하는 방법 image 이니스프리 이니스프리 20.01.12.11:25 2364
10 [BeautifulSoup] 자식태그를 제거하기 - .decompose() & .extract() 10 image 이니스프리 이니스프리 20.01.16.00:07 9463