29P by xguru 2달전 | favorite | 댓글 12개

- 만약 구글검색을 수백만건씩 실행하는 서비스를 만든다면 차단 당하지 않을 대안이 필요함
- 가장 쉬운 것은 유료 프록시를 사용하는 것이지만 상당히 비싼편
ㅤ→ 그래서 필자가 시도해본 것들을 상세히 설명한 재미난 글

- 처음엔 AWS Lambda + Puppeteer를 사용
ㅤ→ AWS가 전세계 16개 리전을 제공하고, 3번 Lambda를 실행하면 새 IP가 지정됨
ㅤ→ 동시에 1000개의 람다를 실행하면 약 250개의 퍼블릭 IP를 사용하게 됨
ㅤ→ 16개 리전 * 250 이면 4000개의 IP주소이고, 이정도면 주간 백만단위의 구글 검색을 수행하는데 충분
ㅤ→ GCP에서도 써봤는데, 웃긴게 구글이 자신의 클라우드 IP를 더 공격적으로 차단함 (AWS와 비교해서)
ㅤ→ 2019~2020년 사이 얘기고 변했을 수 있음

- 이 방법은 구글/빙/아마존 등을 스크래핑 하는데는 사용 가능 하지만 한계가 있음
ㅤ→ DataDome, Akamai, Imperva 같은 안티 봇 회사를 이용한다면 적용 불가
ㅤ→ 굉장히 다양한 방식으로 브라우저 핑거프린팅을 통해서 봇인지를 식별해 냄
ㅤ→ 구글 Picasso, Font/TLS/WebGL Fingerprinting..
ㅤ→ 사실 대부분의 대규모 Scraping 서비스는 클라우드 + 도커 컨테이너들 을 사용하기에 식별하기에 쉬움

- 감지하기 어렵고 확장 가능한 스크래핑 인프라
ㅤ→ 성공적으로 스크래핑 하기 위한 두가지 법칙
ㅤㅤ1. 브라우저 설정을 속이지 않기
ㅤㅤ2. 가장 중요한 것은 "아무도 눈치 채지 못할 경우에만" 브라우저 설정을 속일 것
ㅤ→ 이를 위해서는 그냥 "실제 디바이스를 사용"하는게 가장 좋다는 결론
ㅤㅤ⇨ 500대의 싼 안드로이드 기기를 제조사 여러곳에서 구입하고, 저렴한 데이터 플랜을 가입
ㅤㅤ⇨ 여러 도시에 분산 (안테나 가까운 곳에)
ㅤㅤ⇨ DeviceFarmer/stf 같은 오픈소스를 활용해서 기기를 동시에 컨트롤
ㅤㅤ⇨ Android Go 같은 경량OS를 설치하고, 5분마다 에어플레인모드로 들어가게 해서 계속 새로운 IP주소를 획득
ㅤㅤ⇨ "4G carrier grade NAT" : 4G 캐리어급 NAT는 IPv4 주소 고갈을 막기 위해 고안된 방식으로 IP를 수십만이 공유하기 때문에 차단이 불가능
ㅤ→ 500대의 안드로이드 기기를 사야 하고, 설치 장소가 필요하고, 하드웨어 유지보수 해야 하는 등 귀찮은 점이 많음

- 개선 : 안드로이드를 Emulate
ㅤ→ 안드로이드 기기를 사는 대신, Android-X8, Bluestacks, Android Studio Emulator 등을 이용하면 ?
ㅤ→ Proxidize 는 4G 모바일 프록시를 만들 수 있게 함
ㅤ→ 서버 한대에 50개의 4G 동글을 설치
ㅤ→ 각 서버에서 50~100개의 안드로이드 기기를 에뮬레이트
ㅤ→ 이 스테이션을 5개 도시에 설치
ㅤ→ 단단한 코맨드로 이 스테이션들을 관리

xguru 2달전  [-]

사실 1번의 Lambda+Puppeteer 도 저 방식으로 하면 괜찮긴 할거 같은데
맨뒤의 Proxidize 방법과 비교했을때는 아마도 스크래핑 규모에 따라 비용 차이가 날듯합니다.
더 대용량이 필요할수록 Proxidize가 안정적일 테지만, 간단히 하기엔 1번도 나쁘지 않을것 같아요.

마지막에 소개한 https://proxidize.com/ 이 재미나네요.
직접 4G 모바일 프록시를 만들어서 관리하게 해주는 하드웨어+소프트웨어 솔루션 입니다.
5개 동글 버전이 $399 네요. 사용자들 국가리스트에 한국도 있는거 봐서는 사용은 가능할듯 ?

CGNAT 까지는 아니자만, 소프트웨어 프록시를 풀로 관리하는 Scrapoxy 같은 솔루션도 있습니다.
- Scrapoxy - 웹크롤러용 프록시 풀 관리도구 https://news.hada.io/topic?id=2308

xguru 2달전  [-]

- 봇 감지 우회하기 : 차단당하지 않고 웹 스크레핑 하는 법 https://news.hada.io/topic?id=5304

프록시, 스크래핑 서비스, 안티봇 소프트웨어 등은 위 글에 잘 정리되어 있습니다.

eajrezz 2달전  [-]

멋진 해킹이네요!

joone 2달전  [-]

https://www.diffbot.com/products/crawl/

crawling해서 webpage scraping 해주는 서비스도 있습니다. scraping한 데이터는 불필요한 정보는 제외하고 json으로 저장하고 있습니다.

benjamin 2달전  [-]

입이 쩍...

xguru 2달전  [-]

전혀 다른 얘기지만..

구글 검색을 API화 해서 파는 https://serpapi.com/ 같은 데도.. 있습니다.
근데 여기는 네이버 검색도 API 화 해서 같이 팔아요 ㅎㅎ
https://serpapi.com/naver-search-api

월 3만번 검색에 $250 이라는 놀라운? 가격

v08zbv8fvlkjasdflkj 2달전  [-]

너무 비싸서 놀라운건가요? 감이 안와서요

xguru 2달전  [-]

네 엄청 비싼 거죠. 유료 프록시 쓰는등에 비해서는요.
api라 차단 우려없이 편하긴 합니다만

hentol 2달전  [-]

국내 기준으로는 데이터가 어느 정도 제공되는 0원 알뜰폰 요금제들이 생각나긴 하는데...
대량 가입이 어렵다 보니 요것도 힘들겠군요.

xguru 2달전  [-]

Google Fi의 경우는 회선 하나에 추가 데이터심 4개까지 가능하니 이런 것도 방법이긴 할 듯 합니다

nallwhy 2달전  [-]

예전에 naver 의 무언가를 스크래핑할 때
AWS lambda 에서는 안되고 GCP functions 에서는 되었던 기억이 있는데,
IP range 가 오픈되어있어서 그럴 것이라고 생각했는데 그렇지도 않은가보네요.

honore 2달전  [-]

1번 방식으로 이미 하고 있어서 다른 방법들은 뭐가 있나 하고 봤는데.. 생각지도 못 했네요.