티스토리 뷰

연습

[Python] seleniumwire 소개

onaeonae1 2021. 7. 16. 10:06

들어가는 글

* 수정: 네트워크 기능을 활용하고 싶다면  selenium이 아니라 playwright 쪽을 알아보는게 편하다(노드,파이썬,자바 지원)

 

Selenium은 많은 사람들이 소위 크롤링 프로그램 만들기! 로 쉽게 접한다.

그런데 생각보다 많은 기능들이 있고 이 기능들을 활용해 자동화 테스트로 사용할 수 있다.(실제 개발 목적)

 

나도 Selenium을 써서 여러가지 기능들을 구현해보고 있었는데 하나 불편한 점이 있었다.

request, response를 하나하나 확인할 수 없다는 문제점이었다.

이러한 문제점을 해결해준 seleniumwire라는 패키지를 소개하고자 한다.

 

본문

브라우저 개발자 탭에 있는 네트워크 항목

브라우저 개발자 탭에 있는 네트워크 항목처럼  Selenium 상에서 특정 페이지에 Request를 보내는 부분을 Intercept 해서 좀 보고 싶었는데 접근이 불가능했다. 왜냐하면 Selenium에서 이를 지원하지 않기 때문이다.

 

많은 사람들이 이에 대한 issue를 열었었는데 Selenium 개발진은 client 단에서의 테스트 목적이기 때문에 구현하지 않았고 앞으로도 지원할 계획이 없다고 했다.  (해당 issue)

 

이를 해결하려면 따로 proxy 를 둬서 burp 처럼 돌리도록 하던가 해야하는 번거로움이 있다.

 

그래서 이러한 기능을 추가해서 나온게 selenium의 superset이 seleniumwire 다.

superset이라서 그냥 selenium 기능들 + 추가적으로 구현된 부분 이렇게 모두 사용할 수 있다.

 

우선 아래의 예시만 보면 바로 어떻게 써야할지 감이 온다.

 

driver.requests에 접근해서 response 들을 가져오는 예제이다. 진짜 간단하다.

 

그 외에 프록시라던가 Request Capture 제한, socks, avoid bot detection 등 여러 추가적인 기능들에 대한 설명이 있다.

우선은 request, response만 가져오는게 목적이었으므로 해당 기능을 잘 사용해서 추가 구현을 성공했다.

 

끝내는 글

학교 다닐 때는 selenium, beautifulsoup로 만드는 크롤링! 같은 걸 굉장히 싫어했다.

그런데 요즘 이것저것 만들다 보니 크롤링이라는게 상당히 심오한? 그런 분야라고 생각하게 되었다.

검색엔진들이 아주아주 복잡하겠지만 기본적으로는 크롤링 하면서 정보수집 -> 인덱싱으로 돌아가고 있을 테니 말이다.

 

그리고 어떤 포스트를 보면서 많이 배웠던 것 같다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함