jsonscraper
시장
저널로 돌아가기

IG: 캠페인 시작 전 공개 프로필 오류 확인하기

API로 상태, 공개 여부, 기본 프로필 지표를 확인해 계정 목록 수동 검증을 재현 가능한 보고서로 바꿉니다

편집 정책 오류 제보

캠페인을 시작하기 전에 스크립트로 IG 계정 목록을 처리하면 각 사용자 이름에 대한 API 응답이 담긴 JSON 보고서를 얻을 수 있습니다. jsonscraper IG Scraper API 경로는 외부 상태와 프로필 객체를 반환합니다. 확인된 스키마에는 사용자 이름, 비공개 및 인증 여부, 게시물 수, 팔로워 수와 팔로잉 수가 포함됩니다. 이러한 필드는 수동 검토가 필요한 항목을 선별하는 데 도움이 되지만, 응답이 없거나 예상과 다른 이유를 그 자체로 설명하지는 않습니다.

기사: IG: 캠페인 시작 전 공개 프로필 오류 확인하기
요약: 캠페인을 시작하기 전에 IG 프로필을 자동으로 확인하세요. jsonscraper를 통해 데이터를 요청하고 응답을 저장한 뒤 수동 검토가 필요한 계정 목록을 작성할 수 있습니다.
이미지 역할: 표지 — 핵심 주제
섹션: 
시각적 주제: 캠페인 계정 체크리스트 옆에 일반적인 IG 프로필 실루엣이 표시된 휴대전화와 확인 표시가 된 체크박스, 작은 JSON 데이터 카드가 놓인 편집용 사진. re
사전 점검을 거치면 사용자 이름 목록이 API 응답과 검증 가능한 필드가 담긴 레코드로 바뀝니다.© jsonscraper · AI 생성

문제: 계정 목록은 올바르게 보여도 실제로 사용할 준비가 됐을까요?

캠페인 작업표에는 이름이 바뀐 계정, 오타, 비공개 프로필이 섞여 있을 수 있습니다. 사전 점검 없이 목록 분석을 시작하면 담당자가 계정을 하나씩 열어 봐야 합니다. 자동으로 목록을 처리하면 수작업을 줄이고, 요청한 각 사용자 이름에 대해 API가 반환한 내용을 일관된 기록으로 남길 수 있습니다.

이 시나리오의 목적은 제한적입니다. 목록을 순회하고 실제 HTTP 응답과 JSON을 저장한 뒤, 캠페인에 필요한 조건을 충족하는 프로필을 수동 검토 대상으로 분류합니다. 보고서는 관찰된 데이터를 기록할 뿐, 프로필이 반환되지 않았거나 요청이 오류로 끝난 이유를 판정하지 않습니다.

요청에서 확인하는 항목

jsonscraper 문서에는 GET \/v1\/user\/by\/username 경로가 나와 있습니다. 필수 매개변수는 username이며, 키는 license_key로 전달합니다. 선택 매개변수인 cache_timeout은 지정한 초 단위로 캐싱을 활성화하며, 0으로 설정하면 캐싱이 꺼집니다. 확인된 성공 응답 스키마에는 외부 status와 프로필 필드가 포함된 ig 객체가 있습니다.

진단할 때는 세 가지 사실을 구분하세요. HTTP 요청이 성공했는지, 파싱된 JSON에 ig 객체가 있는지, 그리고 그 객체에 어떤 필드가 포함되어 있는지입니다. 어느 단계에서든 예상한 결과를 얻지 못하면 스크립트는 기술적 결과와 원본 응답을 기록할 수 있습니다. 이런 결과는 확인이 필요하다는 뜻이지, 실패 원인을 입증하는 것은 아닙니다.

입력 데이터와 키 준비하기

usernames.txt 파일을 만들고 한 줄에 사용자 이름 하나씩 기록하되 @ 기호는 제외하세요. 빈 줄과 중복 항목을 제거하고 캠페인에 해당하는 계정만 남기세요. 결과를 나중에 비교할 수 있도록 점검 날짜와 프로젝트 ID를 별도로 보관하세요.

키는 소스 코드나 저장소가 아니라 환경 변수 JSONSCRAPER_INSTAGRAM_LICENSE_KEY에 저장하세요.

export JSONSCRAPER_INSTAGRAM_LICENSE_KEY="사용자_키"
python3 check_profiles.py

이 예제는 Python 3.8+ 표준 라이브러리를 사용하며 HTTP 패키지를 설치할 필요가 없습니다.

예제: 프로필 요청 및 보고서 기록

스크립트는 사용자 이름을 하나씩 순회합니다. JSON 응답을 성공적으로 받으면 실제 응답 본문과 사용 가능한 프로필 필드를 저장하고, HTTP 또는 네트워크 오류가 발생하면 이를 기술적 결과로 기록합니다. 누락된 필드는 null로 남으며, 읽을 수 있는 경우 원본 응답 본문도 저장됩니다.

import json
import os
import time
from datetime import datetime, timezone
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import Request, urlopen

API_KEY = os.environ.get("JSONSCRAPER_INSTAGRAM_LICENSE_KEY")
if not API_KEY:
    raise SystemExit("JSONSCRAPER_INSTAGRAM_LICENSE_KEY를 설정하세요")

BASE_URL = "https:\/\/ig.jsonscraper.com\/v1\/user\/by\/username"

with open("usernames.txt", encoding="utf-8") as f:
    usernames = list(dict.fromkeys(
        line.strip().lstrip("@") for line in f if line.strip()
    ))

results = []
for username in usernames:
    params = urlencode({"username": username, "license_key": API_KEY})
    request = Request(f"{BASE_URL}?{params}", method="GET")
    checked_at = datetime.now(timezone.utc).isoformat()

    try:
        with urlopen(request, timeout=30) as response:
            http_status = response.status
            raw_body = response.read().decode("utf-8")
        try:
            payload = json.loads(raw_body)
            json_error = None
        except json.JSONDecodeError as exc:
            payload = None
            json_error = str(exc)

        profile = payload.get("ig") if isinstance(payload, dict) else None
        record = {
            "requested_username": username,
            "checked_at": checked_at,
            "http_status": http_status,
            "api_status": payload.get("status") if isinstance(payload, dict) else None,
            "check_result": "profile_returned" if isinstance(profile, dict) else "unexpected_or_missing_profile_object",
            "response": payload if payload is not None else raw_body,
        }
        if json_error:
            record["json_error"] = json_error
        if isinstance(profile, dict):
            record["returned_username"] = profile.get("username")
            record["is_private"] = profile.get("is_private")
            record["is_verified"] = profile.get("is_verified")
            record["media_count"] = profile.get("media_count")
            record["follower_count"] = profile.get("follower_count")
            record["following_count"] = profile.get("following_count")
        results.append(record)
    except HTTPError as exc:
        body = exc.read().decode("utf-8", errors="replace")
        results.append({
            "requested_username": username,
            "checked_at": checked_at,
            "check_result": "http_error",
            "http_status": exc.code,
            "response": body,
        })
    except (URLError, TimeoutError) as exc:
        results.append({
            "requested_username": username,
            "checked_at": checked_at,
            "check_result": "request_error",
            "detail": str(exc),
        })

    time.sleep(0.5)

with open("profile-check.json", "w", encoding="utf-8") as f:
    json.dump(results, f, ensure_ascii=False, indent=2)

print(f"저장된 결과: {len(results)}")

이것은 통합 예제이지, 실제 테스트를 수행했다는 보고가 아닙니다. 키는 license_key 매개변수로 전달되지만 출력되지는 않습니다. 전체 응답에는 팀의 데이터 보관 규칙에 따라 접근을 제한해야 하는 정보가 포함될 수 있습니다.

결과 읽는 방법

profile_returned 레코드는 스크립트가 JSON ig 객체를 받았다는 뜻입니다. requested_username과 returned_username을 대조하고 캠페인 절차에 중요한 속성을 살펴보세요. 예를 들어 캠페인에 공개 프로필이 필요한 경우 is_private: true인 계정을 수동 검토 대상으로 보낼 수 있습니다.

기사: IG: 캠페인 시작 전 공개 프로필 오류 확인하기
요약: 캠페인을 시작하기 전에 IG 프로필을 자동으로 확인하세요. jsonscraper를 통해 데이터를 요청하고 응답을 저장한 뒤 수동 검토가 필요한 계정 목록을 작성할 수 있습니다.
이미지 역할: 보조 삽화 2 — 서로 다른 구체적 측면
섹션: 결과 읽는 방법
시각적 주제: 러시아어 인포그래픽: 사용자 이름 목록 → IG 프로필 API GET 요청 → HTTP 및 JSON 확인 → 사용자 이름 필드가 포함된 프로필 객체
이 도식은 사용자 목록에서 보고서까지의 흐름을 보여 주며, 반환된 프로필 데이터와 기술적 오류를 구분합니다.© jsonscraper · AI 생성 삽화

http_error, request_error, unexpected_or_missing_profile_object 결과는 스크립트가 예상한 구조를 얻지 못한 단계만 나타냅니다. 계정이 삭제되었거나 비공개 상태이거나 특정 이유로 접근할 수 없다는 것을 입증하지는 않습니다. 응답을 저장하고 사용자 이름과 키를 확인한 다음 요청을 다시 시도하거나 서비스의 공식 지원팀에 문의하세요.

필드가 없으면 알 수 없는 상태로 두세요. 누락을 0이나 false로 해석하지 마세요. 프로필 카운터는 요청 시점에 반환된 상태를 나타냅니다. 시간 기록을 사용하면 해당 스냅샷을 다음 실행 결과와 구분할 수 있습니다.

관찰 가능성을 유지하는 자동화

작업 스케줄러나 기존 ETL 프로세스의 단계에 실행을 추가하세요. 점검 날짜, 요청한 이름, 결과, 상태, 응답 본문을 보관하세요. 별도 단계에서 JSON을 테이블에 적재하고 확인이 필요한 항목만 담당자에게 알릴 수 있습니다.

변경 사항을 탐지하려면 동일한 프로필의 스냅샷을 선택한 필드별로 비교하세요. 게시물 수의 변화는 프로필을 열어 확인할 이유가 될 수 있지만 게시물이 게시된 정확한 날짜를 알려 주지는 않습니다. 팔로워 수도 요청 시점의 값이므로 저장된 스냅샷으로 관찰 이력을 구성할 수 있습니다.

목록이 큰 경우 처리 속도를 통제하고 횟수를 제한한 재시도를 추가하며 오류 로그를 관리하세요. URL 로그에 키를 포함하지 마세요. 입력 목록과 결과를 분리해서 저장하면 어떤 계정이 이미 처리되었는지 파악하기 쉽습니다.

기대 결과

결과물은 지정한 각 이름의 처리 결과, 시간 기록, 사용 가능한 속성, 저장된 응답이 담긴 JSON 파일입니다. 목록을 캠페인에 전달하기 전에 이름이 일치하는 계정, 비공개 프로필, 기술적 문제를 수동 검토 대상으로 필터링할 수 있습니다. 다음 단계의 기준은 팀이 직접 정합니다.

경로와 매개변수는 IG API 문서에 설명되어 있고, 제품 정보는 IG Scraper API 페이지에서 확인할 수 있습니다. 먼저 작은 표본으로 시작해 실제 응답 형식을 확인하고, 작업 흐름에 맞게 보고서 규칙을 설정하세요.

사람들

아직 이 기사에 등록된 사람이 없습니다.

계속 읽으세요IG 프로필을 일일 변화 목록으로 만드는 방법
다음 기사 읽기

읽은 내용을 실제 연동으로 구현하세요

jsonscraper 소셜 데이터 API를 살펴보고 요청을 테스트하여 다음 워크플로를 구축하세요.

API 둘러보기