-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Instagram Playwright ์คํฌ๋ํ ์ฐจ๋จ ๊ฐ๋ฅ์ฑ ๋ถ์
๐ ๋ถ์ ๊ฐ์
SociaVault ๋ธ๋ก๊ทธ ๊ธ("How to Scrape Instagram Without Getting Blocked")์์ ์ฃผ์ฅํ๋ Instagram ์คํฌ๋ํ ์ฐจ๋จ ์ํ์ฑ์ ๋ํ ๋ถ์ ๋ฐ MapSee-AI ํ๋ก์ ํธ์ ๋ํ ์ ์ฉ ๊ฐ๋ฅ์ฑ ๊ฒํ
๋ถ์ ์ผ์: 2026-01-11
๊ด๋ จ ํ๋ก์ ํธ: MapSee-AI (Instagram ๊ฒ์๊ธ ๋ฉํ๋ฐ์ดํฐ ์ถ์ถ)
๐ SociaVault ๋ธ๋ก๊ทธ ๊ธ ๋ถ์
๊ธ์ ์ฑ๊ฒฉ
- ๋ง์ผํ ์ฝํ ์ธ : ์์ฌ API ์๋น์ค(SociaVault) ํ๋งค ๋ชฉ์
- ํ๊ฒ ๋ ์: ๋๋ ์คํฌ๋ํ์ด ํ์ํ ์ฌ์ฉ์
- ํธํฅ์ : DIY ์คํฌ๋ํ์ ์ํ์ฑ์ ๊ณผ์ฅํ์ฌ API ์ฌ์ฉ ์ ๋
์ฃผ์ฅํ๋ ์ฐจ๋จ ์ฌ์
| ์ฐจ๋จ ๋ฐฉ์ | ์ค๋ช |
|---|---|
| Rate limiting | ๊ณผ๋ํ ์์ฒญ ์ 429 ์๋ฌ |
| Fingerprinting | ๋ธ๋ผ์ฐ์ /๊ธฐ๊ธฐ ๊ฐ์ง |
| Behavior analysis | ๋น์ธ๊ฐ์ ํจํด ๊ฐ์ง |
| IP reputation | ๋ฐ์ดํฐ์ผํฐ IP ์ฐจ๋จ |
| Session validation | ๋ก๊ทธ์ธ ์ํ ๊ฒ์ฆ |
๊ธ์ ๋ฌธ์ ์
-
๋งฅ๋ฝ์ ์ฐจ์ด ๋ฌด์
- ๊ธ์ ํ๋กํ ์ ์ฒด ํฌ๋กค๋ง, ๋๋ ๋ฐ์ดํฐ ์์ง ๊ฐ์
- ๋จ์ผ ๊ฒ์๊ธ URL ์ฒ๋ฆฌ์๋ ์์ ํ ๋ค๋ฅธ ์ํฉ
-
๋น์ฉ ๋น๊ต์ ํธํฅ
- DIY: ์ต๋ ๋น์ฉ ์ ์ ($200-500/์)
- API: ์ต์ ๋น์ฉ ์ ์ ($49-199/์)
-
์ฑ๊ณต๋ฅ ๊ณผ์ฅ
- DIY ์ ๋ขฐ์ฑ 20-70%๋ก ๋ฎ๊ฒ ์ ์
- API ์ ๋ขฐ์ฑ 99%+๋ก ๋๊ฒ ์ ์
- ์ค์ ๋ก๋ ์ฌ์ฉ ํจํด์ ๋ฐ๋ผ ํฌ๊ฒ ๋ค๋ฆ
๐ฏ MapSee-AI ํ๋ก์ ํธ ํํฉ
ํ์ฌ ๊ตฌํ ์ํ
| ๊ตฌํ ๋ฐฉ์ | ํ์ผ ์์น | ์ํ | ์ฉ๋ |
|---|---|---|---|
| yt-dlp | src/services/preprocess/sns.py |
ํ์ฑ | ๋ฉ์ธ ํ์ดํ๋ผ์ธ |
| Playwright | src/services/scraper/ |
๋ฏธ์์ฑ | ํ ์คํธ API |
Playwright ๊ตฌํ (InstagramScraper) ๋์ ๋ฐฉ์
URL ์
๋ ฅ โ Playwright ๋ธ๋ผ์ฐ์ ์คํ โ ํ์ด์ง ๋ก๋ โ og ๋ฉํ ํ๊ทธ ์ถ์ถ โ ์ด๋ฏธ์ง URL ์ถ์ถ
์ถ์ถ ๋ฐ์ดํฐ:
og:title,og:description,og:image,og:url(๋ฉํ ํ๊ทธ)- ์์ฑ์, ์บก์ , ์ข์์ ์, ๋๊ธ ์, ํด์ํ๊ทธ (์ ๊ท์ ํ์ฑ)
- CDN ์ด๋ฏธ์ง URL (DOM ์ฟผ๋ฆฌ)
์ฌ์ฉ ํจํด ํน์ฑ
- โ Public ๊ฒ์๊ธ๋ง ์ ๊ทผ (๋ก๊ทธ์ธ ๋ถํ์)
- โ ์ฌ์ฉ์๊ฐ URL ์ ๊ณตํ ๋๋ง ์ฒ๋ฆฌ (๋๋ ์์ฒญ ์๋)
- โ og ๋ฉํ ํ๊ทธ๋ Instagram์ด ์๋์ ์ผ๋ก ๋ ธ์ถํ๋ ๊ณต๊ฐ ์ ๋ณด
- โ ๋จ์ผ ๊ฒ์๊ธ ๋จ์ ์ฒ๋ฆฌ
๐ ์ฐจ๋จ ๊ฐ๋ฅ์ฑ ํ๊ฐ
์ํ๋ ๋งคํธ๋ฆญ์ค
| ํ๊ฐ ํญ๋ชฉ | ํ์ฌ ๊ตฌํ | ์ํ๋ |
|---|---|---|
| ์ ๊ทผ ๋ฐฉ์ | Public ๊ฒ์๊ธ ๋จ๊ฑด | ๐ข ๋ฎ์ |
| ๋ฐ์ดํฐ ์ถ์ถ | og ๋ฉํ ํ๊ทธ | ๐ข ๋งค์ฐ ๋ฎ์ |
| ์์ฒญ ๋น๋ | ์ฌ์ฉ์ ์์ฒญ ์์๋ง | ๐ข ๋ฎ์ |
| ๋ธ๋ผ์ฐ์ ๊ฐ์ง | headless=True (๊ธฐ๋ณธ) | ๐ก ์ค๊ฐ |
| ๋ก๊ทธ์ธ ํ์ | ๋ถํ์ | ๐ข ๋ฎ์ |
์ข ํฉ ํ๊ฐ: ์ฐจ๋จ ๊ฐ๋ฅ์ฑ ๋ฎ์
์ด์ :
-
og ๋ฉํ ํ๊ทธ์ ์ฑ๊ฒฉ
- Facebook/Twitter ๊ณต์ ์ฉ์ผ๋ก Instagram์ด ์๋์ ์ผ๋ก ์ ๊ณต
- ๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ(Link Preview) ์์ค์ ์ ๊ทผ
- ์ด๋ฅผ ์ฝ๋ ๊ฒ์ "์คํฌ๋ํ"์ด๋ผ๊ธฐ๋ณด๋ค "๊ณต๊ฐ ์ ๋ณด ์กฐํ"
-
์์ฒญ ํจํด
- ๋ถ๋น ์์ญ ๊ฐ๊ฐ ์๋ ์ฐ๋ฐ์ ์์ฒญ
- ์ฌ์ฉ์ ํ๋ ๊ธฐ๋ฐ (์๋ํ ๋๋ ์์ง ์๋)
-
๋ก๊ทธ์ธ ๋ถํ์
- Private ์ฝํ ์ธ ์ ๊ทผ ์๋ ์์
- ๊ณ์ ๊ธฐ๋ฐ ์ถ์ ๋ถ๊ฐ
โ ๏ธ ์ฐจ๋จ๋ ์ ์๋ ์๋๋ฆฌ์ค
๋ค์ ์ํฉ์์๋ ์ฐจ๋จ ์ํ ์ฆ๊ฐ:
| ์๋๋ฆฌ์ค | ์ํ๋ | ๋์ ๋ฐฉ์ |
|---|---|---|
| ๋ถ๋น 50+ ์์ฒญ | ๐ด ๋์ | Rate limiting ๊ตฌํ |
| ๋์ผ IP์์ ์ง์์ ์์ฒญ | ๐ก ์ค๊ฐ | ์์ฒญ ๊ฐ ๋๋ค delay |
| Headless ๋ธ๋ผ์ฐ์ ๊ฐ์ง | ๐ก ์ค๊ฐ | Stealth mode ์ ์ฉ |
| ๋ฐ์ดํฐ์ผํฐ IP ์ฌ์ฉ | ๐ด ๋์ | Residential proxy ์ฌ์ฉ |
๐ง ๊ถ์ฅ ์ฌํญ
1. ํ์ฌ ๊ตฌํ์ผ๋ก ๋จผ์ ํ ์คํธ
# ํ
์คํธ ๋ฐฉ๋ฒ
# 1. ์๋ฒ ์คํ
uv run uvicorn src.main:app --host 0.0.0.0 --port 8001 --reload
# 2. ํ
์คํธ API ํธ์ถ (10-20๊ฐ ๊ฒ์๊ธ)
curl -X POST http://localhost:8001/api/test/scrape \
-H "Content-Type: application/json" \
-d '{"url": "https://www.instagram.com/p/XXXXX/"}'ํ ์คํธ ํฌ์ธํธ:
- ์ฐ์ ์์ฒญ ์ 429 ์๋ฌ ๋ฐ์ ์ฌ๋ถ
- ์๋ต ๋ฐ์ดํฐ ์ ์ ์ถ์ถ ์ฌ๋ถ
- ํ์ด์ง ๋ก๋ ์คํจ ๋น๋
2. ๋ฌธ์ ๋ฐ์ ์ Anti-detection ์ถ๊ฐ
ํ์ํ ๊ฒฝ์ฐ์๋ง ๋ค์ ๋ก์ง ์ถ๊ฐ:
# 1. ๋๋ค delay ์ถ๊ฐ
import random
import asyncio
async def scrape_with_delay(url):
await asyncio.sleep(random.uniform(2, 5)) # 2-5์ด ๋๊ธฐ
return await scrape(url)
# 2. Stealth mode ์ ์ฉ (playwright-stealth)
from playwright_stealth import stealth_sync
browser = playwright.chromium.launch(headless=True)
page = browser.new_page()
stealth_sync(page)
# 3. ํ์ค์ ์ธ User-Agent
context = browser.new_context(
user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) ..."
)3. ๋์ ๊ณ ๋ ค (๋ฌธ์ ์ง์ ์)
| ๋์ | ์ฅ์ | ๋จ์ |
|---|---|---|
| yt-dlp ์ ์ง | ์ด๋ฏธ ๊ตฌํ๋จ, ์์ ์ | ๋ฉํ๋ฐ์ดํฐ ์ ํ์ |
| Instagram Basic Display API | ๊ณต์ API | ์ฌ์ฉ์ ์ธ์ฆ ํ์ |
| oEmbed API | ๊ณต์, ๋ฌด๋ฃ | ์ ํ๋ ๋ฐ์ดํฐ |
๐ ๊ฒฐ๋ก
SociaVault ๊ธ์ ๋ํ ํ๊ฐ
- ๋๋ ์คํฌ๋ํ ์ํฉ์์๋ ์ ํจํ ์ ๋ณด
- ๋จ์ผ ๊ฒ์๊ธ ์ฒ๋ฆฌ์๋ ๊ณผ์ฅ๋ ์ํ ์ ์
- ๋ง์ผํ ๋ชฉ์ ์ ํธํฅ๋ ์ฝํ ์ธ
MapSee-AI์ ๋ํ ๊ถ์ฅ
- ๋จผ์ ํ ์คํธ - ํ์ฌ ๊ตฌํ์ผ๋ก 10-20๊ฐ ๊ฒ์๊ธ ํ ์คํธ
- ๋ฌธ์ ๋ฐ์ ์ ๋์ - Anti-detection ๋ก์ง ์ถ๊ฐ
- ๊ณผ๋ํ ์ ์ ๋์ ๋ถํ์ - ์ฌ์ฉ ํจํด์ ์ฐจ๋จ ๊ฐ๋ฅ์ฑ ๋ฎ์
ํต์ฌ ์์ฝ
Instagram์ og ๋ฉํ ํ๊ทธ๋ฅผ ์ฝ๋ ๊ฒ์ "์คํฌ๋ํ"์ด๋ผ๊ธฐ๋ณด๋ค "๋งํฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ" ์์ค์ด๋ค.
๋จ์ผ ๊ฒ์๊ธ URL ์ฒ๋ฆฌ ์์ค์์๋ ์ฐจ๋จ๋ ๊ฐ๋ฅ์ฑ์ด ๋ฎ์ผ๋ฉฐ,
์ค์ ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ทธ๋ ๋์ํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
์์ฑ์: Claude (AI Assistant)
์ฐธ๊ณ ์๋ฃ: SociaVault Blog - "How to Scrape Instagram Without Getting Blocked (2025 Guide)"
Metadata
Metadata
Assignees
Labels
Type
Projects
Status