사례 3주차 2026-08-06 · B2B 잠재고객 발굴 에이전트 연재

API를 몰아쳤다가 IP 차단당하고, 원인을 진단한 이야기

공공데이터 API를 동시 8개씩 몰아서 불렀다가 접속 자체가 막혔다. "내 키가 문제인지, 접속 자체가 막힌 건지"를 가짜 키로 테스트해서 알아낸 진단 과정과 재발 방지 설정.

누구에게 도움: 공공데이터 API나 무료 API로 대량 작업을 자동화하다가, 갑자기 요청이 다 실패하기 시작한 사람.

Before

상장기업 4,000개의 업종코드를 자동으로 훑는 스크립트를 만들었다. “빨리 끝내고 싶어서” 동시에 8개씩 요청을 보내도록 짰다. 처음엔 잘 됐다 — 200개, 400개, 600개… 순조롭게 진행되다가, 1,000개쯤 지난 시점부터 갑자기 요청이 죄다 실패하기 시작했다.

어떻게 했나

1) 증상부터 정확히 봤다

에러 메시지를 그냥 넘기지 않고 자세히 봤다.

Recv failure: Connection reset by peer

이건 “느려서 시간초과”가 아니라, 서버가 연결 자체를 강제로 끊어버리는 증상이었다.

2) “내 키 문제인지” vs “접속 자체가 막힌 건지” 구분했다

가장 먼저 확인해야 할 건 “무엇이 막혔나”였다. 그래서 일부러 가짜 API 키로 똑같이 요청해봤다.

curl -sv "https://opendart.fss.or.kr/api/company.json?crtfc_key=test&corp_code=00126380"

결과: 진짜 키로 시도했을 때와 **완전히 똑같은 “Connection reset”**이 났다. 키가 틀렸다는 응답(보통은 별도 에러 메시지)이 아니라 그냥 연결이 끊겼다는 건, 키의 문제가 아니라 접속 자체(아마 IP 단위)가 막혔다는 뜻이었다.

3) 범위를 넓혀서 한 번 더 확인했다

혹시 인터넷 자체가 문제인 건 아닌지도 확인했다.

curl -s -o /dev/null -w "%{http_code}\n" https://www.google.com     # 200 (정상)
curl -s -o /dev/null -w "%{http_code}\n" https://opendart.fss.or.kr/ # 000 (API 아닌 메인 홈페이지조차 안 열림)

구글은 멀쩡한데 OpenDART 메인 홈페이지조차 안 열리는 걸 보고, “이 사이트로 가는 접속 자체가 막혔다”는 결론을 내렸다.

막힘 → 해결

  • 막힘: 정확히 몇 분/몇 시간 차단되는지, 공식적으로 어떤 기준으로 차단하는지는 끝내 못 찾았다 (사이트 자체가 안 열려서 이용약관도 확인 못 함).
  • 해결(재발 방지): 원인을 정확히 몰라도, 다시 안 걸리게 스크립트를 훨씬 보수적으로 고쳤다.
    • 동시 요청 8개 → 1개(순차 실행)
    • 요청 간 딜레이 250ms → 700ms
    • **하루 호출 총량 상한(800회)**을 코드로 강제 — 넘으면 자동 중단
    • User-Agent에 연락처를 명시해서 익명 트래픽처럼 안 보이게 함

After

재발 방지 설정을 적용한 뒤로, 같은 스크립트를 다시 돌려도 안전하게 진행되는 걸 확인했다. (참고: 한 번 차단된 뒤엔 즉시 풀리지 않아서, 이 글을 쓰는 시점에도 완전히 복구되진 않았다 — 이건 진행형 이슈다.)

배운 것 / 재사용 자산

API가 갑자기 다 막힐 때 진단 체크리스트

  1. 에러 메시지를 정확히 읽는다 (“타임아웃”과 “연결 강제 종료”는 원인이 다르다).
  2. 일부러 가짜 키로 같은 요청을 해본다 — 키 문제인지 접속 자체 문제인지 바로 구분됨.
  3. 그 API가 아닌 **다른 사이트(구글 등)**로도 확인해서, 내 인터넷 문제가 아닌지 배제한다.
  4. 그 서비스의 메인 홈페이지도 열어봐서, API만 막힌 건지 전체가 막힌 건지 확인한다.

원인을 100% 못 찾아도 괜찮다. “왜 막혔는지”보다 “다시 안 막히게 어떻게 할지”에 먼저 집중하는 게 실전에서는 더 빠른 길이었다.