웹 스크래핑시 프록시가 필요한 이유
웹 스크래핑시 하나의 IP 주소에서 너무 많은 request 요청을 요구하기 때문에, 서버의 IP가 블럭될 수 있다. (웹 마스터가 막아버린다) 따라서 프록시를 이용해 IP주소를 바꿔가면서 계속해서 작업을 수행한다.
프록시 서버는 리소스를 구해오는 대리자 역할을 수행한다.
클라이언트 —-> 프록시 —-> 서버 (리소스)
*참고) web crawling / web scraping 다른 용어다.
차이점은 ‘웹 크롤링'은 웹 페이지의 링크를 타고 계속해서 탐색을 이어가지만, ‘웹 스크래핑'은 데이터 추출을 원하는 대상이 명확하여 특정 웹사이트만 추적한다.
프록시 유료 구입을 위해서 사전에 알아야하는 것
프록시 타입들
3가지 종류의 프록시가 있다.
- 데이터센터 프록시: 클라우드서비스 제공자들로부터 지원하는 프록시들이다. 많은 사람들이 사용하는 것으로 알려져 있다. 그러나 가격이 저렴하기 때문에, 저품질 프록시들이 웹 크롤링에 많이 사용된다.
- 거주용 IP 프록시: 로컬 ISP의 IP주소이다. 그래서 웹마스터가 실제 사람이 웹 사이트를 보고 있는 것인지 웹 크롤링하고 있는건지 구분하지 못한다. 데이터센터 프록시에 비해 매우 비싸고, 만약 IP 소유자가 웹크롤링 목적으로 자신의 IP가 사용되고 있다는 것을 완전히 인지하지 못하면 법적 문제를 야기할 수 있다.
- 모바일 IP 프록시: 개인용 모바일 기기의 IP주소이다. 거주용 IP와 유사하다. 매우 비싸고 모바일 기기 소유자가 인지하지 못할 경우 법적 문제를 야기할 수 있다.
-> 거주용 IP 프록시 가장 안전. 데이터 센터 프록시의 경우 웹 크롤링하는 것을 쉽게 들키고 보통 SSL 인증서가 적절히 고려되지 않은채 수행됨. 즉 블럭킹될 위험성이 가장 높음.
따라서 거주용 IP 프록시 제공해주는 업체 비교
거주용 IP 서비스 제공자 비교 리스트
Proxyway : 프록시 서버들 평가하는 독립적인 플랫폼
https://proxyway.com/best/residential-proxies#Smartproxy
- 순위
- SmartProxy
- Oxylabs
- Bright Data
- SOAX -> 4위부턴 response time이 1초 이상이라 고려 대상에서 제외
- NetNut
- 금액
유료 프록시 사용 방법
예제 참고 : Smartproxy
구매하면 id password를 통해 proxy ip address 제공 받음
api 제공하고 있음
매 세션마다 다른 ip를 제공해주기 때문에 block될 위험이 적음.
smaprtproxy 사용법 : https://help.smartproxy.com/docs/how-do-i-use-proxies
smartproxy api 참고 코드 제공 : https://github.com/Smartproxy/Smartproxy-API
-> 다른 업체도 동일하게 id, password 방법으로 제공함.
금액 시뮬레이션
- 트랜잭션 테스트
랜덤으로 아래 웹 사이트 접속할 때 데이터 트랜잭션 크기 확인함
네이버 뉴스 홈: 2MB, 1.3MB, 248kB, 2.8MB
네이버 블로그: 5MB, 5.2MB, 5.7MB, 6.4MB
유튜브 영상: 2.1MB, 7.6MB, 14.4MB, 20.7MB
(유튜브는 바로 영상 스트리밍되서 부정확함)
깃허브: 306kB, 371kB, 181kB
티스토리 블로그: 4.7MB, 2.8MB
캐치: 8.7MB
=> 1번 웹사이트 크롤링할 때 5MB 라고 가정하면, 200번 크롤링할 때 1GB 부과
웹사이트만 살펴봤을 때 느낀점
- Smartproxy
장점: 매뉴얼, api 사용법, 구매법 등 설명이 자세히 잘 나와있어서 편함. 이해가 쉬움
단점: 프록시 프로토콜 socks5 지원 안함. 지역 타겟팅 제한이 있음 (일부 웹사이트는 특정 나라 접속을 제한하기 때문에 지역 타겟팅해서 Ip endpoint 얻어오는 기능 지원이 필요함)
참고1) 프록시 프로토콜이란?
- Http 프록시
- Socks5 프록시 : 운영 체제의 심층에서 작업하는 더 강력한 프록시 서버로 더 많은 앱을 처리하고 블록을 더 잘 관통할 수 있다.
-> 단순하게 생각해서 socks5 프록시가 더 좋다.
위의 유료 프록시 구매하여 구축 방법
크롤링 라이브러리 2가지
1)페퍼티어: 사용 쉬움. 성능 좋음. 단점은 chrome 전용
2)셀레니움: IE지원!!
AWS에 크롬 웹드라이버 설치 필수. 혹은 이러한 드라이버를 갖춘 이미지를 허브에서 찾아서 도커 활용하면 됨.
유료 프록시 구매하지 않고, 무료 프록시 이용 방법
무료 프록시 제공하는 웹 사이트 url 알아둠.
해당 사이트의 구조 분석해서 ip 주소와 port 저장해서 프록시로 활용
(latency로 정렬해서 빠른 것 위주로 사용함)
-> 단점은 대부분의 무료 프록시 웹 사이트는 이미 블록킹 돼있는 경우가 많아서, 사용 가능한 주소 찾는게 어려움.
무료 프록시 활용 코드 예제 : https://m.blog.naver.com/minim83/221978014069
참고2) 웹 스크래핑을 위한 프록시 사용 가이드
전체적으로 정리 잘 되어 있음 : https://www.geeksforgeeks.org/the-complete-guide-to-proxies-for-web-scraping/