리크루팅이나 HR 분석을 하고 있다면, 아마도 다음과 같은 상황에 직면했을 것입니다: 경쟁사의 500개 이상의 채용 공고를 신속하게 수집해야 하거나, 급여 시장을 추적하거나, 고용주 연락처를 추출해야 하는데, 플랫폼이 20-30개의 요청 후에 차단합니다. LinkedIn과 HeadHunter는 데이터를 적극적으로 보호하며, 올바른 접근 방식이 없으면 파싱은 무한한 CAPTCHA와 차단과의 싸움으로 변하게 됩니다.
이 가이드에서는 2024년에 실제로 작동하는 도구, 안정적인 데이터 수집을 위한 프록시 설정 방법 및 계정을 잃지 않기 위해 피해야 할 실수를 살펴보겠습니다.
왜 LinkedIn과 HeadHunter가 파싱을 차단하는가
두 플랫폼 모두 데이터로 수익을 창출합니다. LinkedIn은 유료 요금제인 Recruiter 및 Recruiter Lite를 통해 데이터베이스에 대한 접근을 판매하고, HeadHunter는 API 및 유료 게시를 통해 수익을 얻습니다. 누군가가 무료로 대량으로 이러한 데이터를 수집하기 시작하면, 플랫폼은 강력하게 반응합니다. 다음은 여러분이 마주칠 구체적인 보호 메커니즘입니다:
요청 속도 제한 — 요청 빈도 제한
LinkedIn은 일정 시간 내에 프로필 및 채용 공고 페이지의 조회 수를 추적합니다. 무료 계정은 한 달에 약 300개의 프로필을 조회할 수 있으며, 이후에는 경고 또는 임시 차단을 받습니다. 요청 간 지연 없이 자동으로 파싱하면 이 한도가 몇 분 만에 소진됩니다. HeadHunter는 하나의 IP에서의 검색 요청 수를 제한하며, 초과 시 CAPTCHA를 표시하거나 임시로 접근을 차단합니다.
행동 분석 및 User-Agent
플랫폼은 행동 패턴을 분석합니다: 실제 사용자는 페이지를 스크롤하고 콘텐츠에 머무르며 비연속적으로 클릭합니다. 봇은 동일한 간격으로 요청을 하고 스크롤하지 않으며 비정상적인 헤더를 전송합니다. LinkedIn은 추가로 인증된 세션의 존재를 확인합니다 — 계정에 로그인하지 않으면 제한된 데이터만 보이고 매우 빠르게 IP 차단을 받습니다.
IP 주소 차단
가장 일반적인 보호 방법입니다. 하나의 IP에서 너무 많은 요청이 발생하면 해당 IP는 블랙리스트에 올라갑니다. 특히 데이터 센터의 IP(AWS, Google Cloud, Hetzner)는 빠르게 차단됩니다: 플랫폼은 이러한 주소 범위를 알고 있으며, 이에 대해 높은 의심을 가지고 있습니다. 가정용 및 모바일 IP는 실제 사용자가 있을 수 있기 때문에 덜 차단됩니다.
⚠️ 알아두어야 할 사항
LinkedIn은 2023년에 보호를 크게 강화했습니다: 이제 VPN이나 데이터 센터 프록시로 프로필을 수동으로 조회하더라도 계정이 차단될 수 있습니다. LinkedIn 작업을 위해서는 주거용 또는 모바일 프록시가 필수적입니다.
리크루터와 HR 분석가가 파싱하는 내용
도구를 설정하기 전에 작업을 정의해야 합니다 — 이는 접근 방식과 프록시 유형 선택에 영향을 미칩니다. HR 전문가와 리크루팅 에이전시가 작업하는 주요 시나리오는 다음과 같습니다:
| 작업 | 플랫폼 | 데이터 양 |
|---|---|---|
| 시장 급여 모니터링 | HeadHunter, LinkedIn | 500–5000 채용 공고/일 |
| 고용주 연락처 수집 | 100–1000 프로필/일 | |
| 후보자 요구 사항 분석 | HeadHunter, LinkedIn | 1000–10,000 채용 공고 |
| 경쟁사의 새로운 채용 공고 추적 | HeadHunter | 일일 모니터링 |
| 수동 후보자 검색 | 50–500 프로필/일 |
핵심 사항: 대량 데이터 작업(하루 수천 개의 채용 공고)은 회전 프록시 풀을 필요로 합니다. 소량 작업(매일 50-100개 포지션 모니터링)은 요청 간 지연을 준수하는 1-2개의 정적 프록시로 해결할 수 있습니다.
채용 공고 파싱을 위한 준비된 도구
좋은 소식은 처음부터 코드를 작성할 필요가 없다는 것입니다. 다양한 작업과 기술 수준에 맞는 준비된 솔루션이 있습니다. 주요 카테고리를 살펴보겠습니다.
No-code 도구 (프로그래밍 없이)
Apify — LinkedIn 및 HeadHunter를 위한 준비된 "액터"가 있는 클라우드 플랫폼입니다. 준비된 LinkedIn Jobs Scraper와 HH.ru Scraper가 있습니다. 검색 매개변수만 지정하면 플랫폼이 나머지를 처리합니다. 자체 프록시 연결을 지원합니다. 요금은 월 $49부터 시작하며 무료 한도가 있습니다.
Phantombuster — LinkedIn에 특화되어 있습니다. 채용 공고, 프로필, 회사 연락처를 수집할 수 있습니다. 인증된 LinkedIn 계정을 통해 작동합니다. 프록시를 지원합니다. 중요: 하나의 LinkedIn 계정 = 하나의 프록시 프로필, 그렇지 않으면 IP 변경으로 차단됩니다.
Octoparse — 파서의 시각적 빌더입니다. 코딩 없이 마우스로 필요한 요소를 지정하여 모든 웹사이트에서 데이터 수집을 설정할 수 있습니다. 프록시 회전을 지원합니다. HeadHunter에 적합하며 인터페이스가 간단하고 이해하기 쉽습니다.
기술 사용자를 위한 도구
ParseHub — 시각적 인터페이스가 있는 데스크톱 애플리케이션이지만 Octoparse보다 더 유연합니다. 동적 콘텐츠(JavaScript 페이지)와 작업할 수 있습니다. LinkedIn의 경우 이는 매우 중요합니다 — 대부분의 데이터는 동적으로 로드됩니다.
Bright Data (Web Scraper IDE) — 내장된 프록시가 있는 전문 플랫폼입니다. LinkedIn을 위한 준비된 템플릿이 있습니다. 비쌉니다, 하지만 산업 규모의 데이터 수집에 신뢰할 수 있습니다.
HH.ru API — HeadHunter의 공식 API입니다. 비영리 사용에 대해 무료이며, 비즈니스용으로는 유료입니다. 채용 공고 모니터링이 목표라면, 공식 API가 가장 안정적인 옵션입니다. 한도: 인증된 애플리케이션에 대해 초당 50개의 요청.
💡 팁
HeadHunter의 경우 공식 API로 시작하세요 — 이는 합법적이고 안정적이며 특정 한도까지 무료입니다. LinkedIn은 외부 도구와 프록시 없이는 불가능합니다. 채용 공고를 위한 공식 공개 API는 없습니다.
프록시가 필요한 이유와 어떤 유형을 선택해야 하는가
프록시는 요청이 진행되는 중간 서버입니다. 플랫폼은 프록시의 IP를 보고 실제 주소는 보지 않습니다. 프록시가 회전할 때(자동으로 IP가 변경될 때) 각 요청은 새로운 사용자로부터의 요청처럼 보입니다 — 이는 한도 및 차단을 우회할 수 있게 해줍니다.
그러나 모든 프록시가 LinkedIn과 HeadHunter에 대해 동일하게 효과적인 것은 아닙니다. 프록시 유형 선택은 결과에 중대한 영향을 미칩니다:
| 프록시 유형 | HeadHunter | 속도 | 가격 | |
|---|---|---|---|---|
| 주거용 | ✅ 훌륭함 | ✅ 훌륭함 | 보통 | $$ |
| 모바일 | ✅ 훌륭함 | ✅ 좋음 | 보통 | $$$ |
| 데이터 센터 | ❌ 자주 차단됨 | ⚠️ 보통 | 빠름 | $ |
주거용 프록시 — LinkedIn에 최적의 선택
주거용 프록시는 실제 가정 사용자의 IP 주소를 사용합니다. LinkedIn의 관점에서 이는 집에 앉아 있는 일반 사용자입니다. 이러한 IP는 블랙리스트에 올라갈 확률이 매우 낮으며, 플랫폼은 이를 실제 사용자와 구분할 수 없습니다. LinkedIn 파싱을 위한 산업 표준입니다.
채용 공고 파싱을 위한 주거용 프록시 선택 시 주요 매개변수:
- 지리적 위치: 파싱할 채용 공고의 국가에 해당하는 IP를 선택하세요 (HeadHunter의 경우 — 러시아, LinkedIn의 경우 — 필요한 국가)
- 회전: 각 요청 후 자동으로 IP 변경 또는 타이머에 따라 변경
- IP 풀: 많을수록 좋으며, 차단된 IP의 재사용 위험을 줄입니다.
- HTTP/HTTPS 및 SOCKS5 지원 — 대부분의 파싱 도구는 이러한 프로토콜을 요구합니다.
모바일 프록시 — LinkedIn 계정 작업을 위한
인증된 계정을 통해 LinkedIn을 파싱하는 경우(Phantombuster가 작동하는 방식), 모바일 프록시는 추가적인 이점을 제공합니다: LinkedIn은 모바일 운영자를 출처로 인식하고 이러한 IP를 더 신뢰합니다. 하나의 모바일 IP는 수천 명의 실제 사용자(운영자의 NAT 뒤에)에게 서비스를 제공할 수 있으므로, 높은 활동도 의심을 일으키지 않습니다.
데이터 센터 프록시 — HeadHunter 전용
데이터 센터 프록시는 빠르고 저렴하지만 LinkedIn에서 공격적으로 차단됩니다. HeadHunter에서는 더 잘 작동합니다: 플랫폼은 데이터 센터 IP에 대해 덜 편집증적이며, 요청 간 지연을 준수하면 됩니다. 소규모 채용 공고 모니터링을 위한 예산 친화적인 방법입니다.
LinkedIn 파싱: 단계별 설정
LinkedIn은 파싱하기 가장 어려운 플랫폼입니다. 계정을 잃지 않도록 신중하게 행동하는 것이 중요합니다. 가장 인기 있는 도구 중 하나인 Phantombuster를 예로 들어 작업 흐름을 살펴보겠습니다.
1단계: LinkedIn 계정 준비
파싱을 위해 기본 작업 계정을 사용하지 마세요. 별도의 계정을 만들거나 보조 계정을 사용하세요. 차단되면 소중한 연결과 기록을 잃지 않게 됩니다. 계정은 "온난화"되어야 합니다: 프로필이 채워지고, 몇 개의 연락처가 있으며, 파싱 시작 전 최소 일주일의 활동이 필요합니다.
2단계: 계정에 프록시 연결
중요한 규칙: 하나의 LinkedIn 계정 = 하나의 IP 주소. 오늘 IP 1로 로그인하고 내일 IP 2로 로그인하면 — 이는 LinkedIn 보안 시스템에 빨간 깃발이 됩니다. 각 계정에 대해 정적 주거용 프록시(스티키 세션)를 사용하세요.
Phantombuster에서 프록시 설정은 다음과 같습니다:
- Phantombuster 계정에서 Settings → Proxies로 이동하세요.
- Add Proxy를 클릭하세요.
- 프록시 정보를 입력하세요: 호스트, 포트, 로그인, 비밀번호.
- 유형을 선택하세요: HTTP 또는 SOCKS5 (프록시 제공업체에 따라 다름).
- Test Proxy를 클릭하여 프록시가 작동하는지 확인하세요.
- 이 프록시를 특정 "팬텀"(작업)에 할당하세요, 이 작업은 귀하의 계정과 함께 작동합니다.
3단계: LinkedIn Jobs Export 설정
Phantombuster에서 "LinkedIn Jobs Search Export" 팬텀을 찾으세요. 설정:
- Search URL: 필요한 필터(직위, 도시, 고용 유형)가 있는 LinkedIn 채용 공고 검색 URL을 붙여넣으세요.
- Number of jobs per launch: 25-50으로 시작하세요. 첫날에 500을 설정하지 마세요.
- Launch frequency: 2-3시간마다 1회. 지속적으로 실행하지 마세요.
- Session cookie: 브라우저에서 li_at 쿠키를 복사하세요 (Phantombuster에 설명이 있습니다).
4단계: 안전한 한도 설정
LinkedIn은 공격성으로 차단하며, 파싱 자체로 차단하지는 않습니다. 하나의 계정에 대한 안전 한도는 다음과 같습니다:
- 하루에 80-100개의 채용 공고 조회 이상은 안 됩니다.
- 요청 간 지연: 최소 3-5초.
- 야간에 휴식을 취하세요 (인간 행동을 모방하세요).
- 주말에는 파싱을 시작하지 마세요 — B2B 플랫폼에 의심스럽게 보입니다.
⚠️ LinkedIn에서 대량 데이터가 필요하다면
하루에 수천 개의 채용 공고를 파싱해야 할 경우 — 각 주거용 프록시가 있는 여러 계정을 사용하세요. 하나의 계정 + 하나의 IP = 차단 위험 없이 하루에 최대 100개의 채용 공고. 10개의 계정 × 100 = 하루 1000개의 채용 공고.
HeadHunter 파싱: 특징 및 설정
HeadHunter는 두 가지 이유로 LinkedIn보다 파싱하기 더 쉽습니다: 공식 API가 있으며, 보호가 덜 공격적입니다. 그러나 올바른 설정 없이 대량 데이터를 수집하면 여전히 차단됩니다.
옵션 1: 공식 HeadHunter API (추천)
채용 공고 모니터링 및 시장 분석(연락처 수집 없이)이 목표라면, hh.ru의 공식 API를 사용하세요. 이는 완전히 합법적이며 데이터에 안정적으로 접근할 수 있습니다.
- dev.hh.ru에 애플리케이션을 등록하세요.
- client_id 및 client_secret를 받으세요.
- GET /vacancies 엔드포인트를 사용하여 채용 공고를 검색하세요.
- 필터링 매개변수: text, area(지역), salary, experience, schedule.
- 한도: 인증된 애플리케이션에 대해 초당 50개의 요청.
결과는 JSON 형식으로 제공되며 — 이를 Excel이나 Google Sheets로 쉽게 로드할 수 있습니다. Zapier나 Make(구 Integromat)와 같은 도구를 사용하여 코드를 작성하지 않고도 가능합니다.
옵션 2: Apify를 통한 파싱 (코드 없이)
공식 API에 없는 데이터(예: 고용주 연락처 또는 비표준 형식의 데이터)가 필요한 경우, HH.ru용 준비된 액터가 있는 Apify를 사용하세요:
- apify.com에 접속하여 "HH.ru Scraper" 액터를 찾으세요.
- Try for free를 클릭하세요.
- 설정에서 검색 쿼리를 지정하세요 (직위, 도시).
- Proxy configuration 섹션에서 "Custom proxies"를 선택하고 프록시 정보를 붙여넣으세요.
- HeadHunter에는 러시아 IP가 있는 주거용 프록시가 적합합니다 — 플랫폼은 지역적입니다.
- Start를 클릭하고 결과를 기다리세요.
- CSV, JSON 또는 Excel로 데이터를 내보내세요.
옵션 3: 고급 작업을 위한 Octoparse
Octoparse는 HH.ru 페이지의 모든 요소를 파싱하도록 설정할 수 있습니다 — API에 없는 요소도 포함됩니다. 예를 들어, 채용 공고의 전체 설명, 연락처 정보(보이는 경우), 회사 링크를 수집할 수 있습니다.
- Octoparse를 다운로드하고 설치하세요.
- 새 작업을 생성하고 hh.ru의 채용 공고 검색 URL을 붙여넣으세요.
- 자동 감지 모드를 사용하세요 — Octoparse가 목록 구조를 자동으로 인식합니다.
- 모든 필요한 필드가 강조 표시되었는지 확인하세요 (제목, 회사, 급여, 도시).
- 작업 설정에서 IP Rotation을 활성화하고 프록시를 추가하세요.
- 요청 간 지연을 설정하세요: 2-4초.
- 클라우드에서 실행하여 지속적으로 수집하세요.
💡 HeadHunter를 위한 프록시의 지리적 위치
HeadHunter는 IP를 통해 사용자의 지역을 식별하고 지역 채용 공고를 표시합니다. 특정 도시(예: 모스크바 또는 상트페테르부르크)에서 채용 공고를 파싱하려면 해당 지역의 IP가 있는 프록시를 사용하세요. 전국 모니터링의 경우, 러시아 IP면 충분합니다.
자주 하는 실수와 피하는 방법
LinkedIn 및 HeadHunter에서 파싱할 때 대부분의 문제는 동일한 실수에서 발생합니다. 다음은 하지 말아야 할 사항의 체크리스트입니다:
❌ 오류 1: 모든 작업에 하나의 IP 사용
초보자들이 가장 많이 저지르는 실수는 자신의 가정용 IP 또는 하나의 프록시에서 파싱을 시작하는 것입니다. 플랫폼이 비정상적인 활동을 감지하면 — IP가 영구적으로 차단됩니다. 해결책: 자동 IP 변경이 가능한 회전 프록시 또는 여러 개의 정적 프록시 풀을 사용하세요.
❌ 오류 2: 너무 높은 요청 속도
10분에 1000페이지를 파싱하는 것은 차단으로 이어지는 확실한 길입니다. 실제 사용자는 그렇게 빠른 속도로 페이지를 조회할 수 없습니다. 지연을 설정하세요: HeadHunter의 경우 요청 간 최소 2-3초, LinkedIn의 경우 5-10초. 지연에 무작위 변화를 추가하세요 (정확히 3초가 아니라 2초에서 5초 사이 — 이는 인간을 모방합니다).
❌ 오류 3: LinkedIn 계정의 IP 변경
인증된 LinkedIn 계정으로 작업할 때 회전 프록시를 사용하는 경우 — 각 요청이 새로운 IP에서 발생합니다. LinkedIn은 이를 계정 해킹으로 인식합니다 (누군가 여러 장소에서 연결하고 있음) 그리고 차단됩니다. 인증된 세션에는 스티키 프록시(오랜 시간 동안 고정된 IP) 또는 정적 주거용 프록시만 사용하세요.
❌ 오류 4: User-Agent 무시
User-Agent는 브라우저가 서버에 자신을 식별하기 위해 보내는 문자열입니다. 많은 파싱 도구는 기본적으로 "python-requests/2.28.0"와 같은 User-Agent를 전송합니다 — 이는 즉시 봇으로 인식됩니다. 현대 브라우저의 현실적인 User-Agent로 설정하세요. Apify와 Phantombuster에서는 자동으로 설정되며, Octoparse에서는 작업 설정에서 설정할 수 있습니다.
❌ 오류 5: robots.txt 확인 없이 파싱
LinkedIn은 robots.txt에서 파싱을 금지하고 있으며, 대규모로 이를 수행하는 기업과 적극적으로 소송을 진행합니다. 이는 개인 분석을 위한 데이터 수집이 불가능하다는 의미는 아닙니다 — 그러나 상업적 사용 시 법적 위험을 이해하는 것이 중요합니다. HeadHunter는 공식 API를 사용할 경우 더 관대합니다.
❌ 오류 6: 저렴한 공개 프록시
무료 또는 매우 저렴한 공개 목록의 프록시는 함정입니다. 이들은 이미 대부분의 플랫폼에서 차단되었으며, 불안정하게 작동하고 데이터를 자주 가로챕니다. 진지한 작업을 위해서는 검증된 공급업체로부터의 유료 프록시가 필요합니다. 실제 주거용 또는 모바일 IP가 필요합니다.
파싱 시작 전 체크리스트
- ✅ 별도의 계정 사용 (기본 작업 계정 아님)
- ✅ 주거용 또는 모바일 프록시 연결됨
- ✅ LinkedIn의 경우: 하나의 계정 = 하나의 고정 IP
- ✅ 요청 간 지연 설정됨 (최소 3초)
- ✅ User-Agent가 실제 브라우저와 동일하게 설정됨
- ✅ 일일 요청 한도가 합리적인 값으로 제한됨
- ✅ 파싱 시작 전에 프록시 테스트됨
- ✅ 프록시의 지리적 위치가 목표 지역에 맞음
결론
LinkedIn 및 HeadHunter에서 채용 공고를 파싱하는 것은 리크루터, HR 분석가 및 노동 시장 연구자에게 유용한 도구입니다. 가장 중요한 것은 올바른 접근 방식을 선택하는 것입니다: HeadHunter의 경우 공식 API로 시작하고, LinkedIn의 경우 Phantombuster 또는 Apify와 같은 전문 도구를 사용하여 올바르게 설정된 프록시를 사용하세요.
이 가이드의 주요 결론: LinkedIn은 계정당 고정 IP가 있는 주거용 또는 모바일 프록시를 요구하며, HeadHunter는 덜 엄격하지만 대량 작업 시에도 프록시가 필요합니다. 요청 한도를 준수하고 인간 행동을 모방하며, 자동화를 위해 기본 계정을 사용하지 마세요.
채용 공고를 정기적으로 모니터링하거나 LinkedIn에서 대규모 데이터를 수집할 계획이라면, 주거용 프록시를 사용하는 것이 좋습니다 — 이는 두 플랫폼 모두와의 최대 호환성과 차단 위험을 최소화합니다.