로그인이 끊긴 걸 모르고 6번 더 두드렸다 — 글 올리는 봇이 내 계정을 잠갔다

문제 해결··7분 읽기·

오늘 배울 것 자동화는 실패가 나온 자리에서 다시 시도하지 말고 멈출 줄 알아야 합니다.

이 글은 이렇게 만들었습니다AI 활용 원칙

  • 나 로그인 창을 띄워 달라고 했고, 계정이 잠긴 것을 먼저 발견해 알렸어요. 이 플랫폼을 계속할지 물었고, 다음 날 자동·수동 모두 그만두기로 정했습니다.

  • AI 원인을 되짚어 "로그인 창은 한 번, 글 올리는 프로그램은 여섯 번 실행"을 찾아냈고, 자동화를 전면 정지했어요. 재발 방지 규칙을 인계 메모에 적고, 프로그램에 로그인 확인과 사람 호출 경로를 넣었습니다.

결과부터 — 저녁 7시에 제 계정이 잠겼어요

10월 하순, 저녁 7시 무렵이었어요. 제 계정에 보호조치가 걸렸습니다. 로그인이 막혔다는 뜻이에요.

제가 만들던 것은 글을 여러 곳에 자동으로 올려 주는 도구예요. 그날의 목적지는 제 프로젝트 소식을 올리려던 커뮤니티 게시판이었어요. 이후로는 "그 플랫폼"이라 부르겠습니다.

그날 일어난 일입니다.

  1. 로그인 창은 한 번만 띄웠어요. 그런데 글 올리는 프로그램은 여섯 번 실행됐습니다.

  2. 프로그램은 이미 죽은 로그인 정보로 등록 요청을 계속 보냈어요. 서버는 그때마다 인증 실패를 돌려줬습니다.

  3. 플랫폼은 그걸 비정상 접근으로 보고 제 계정에 보호조치를 걸었어요. 이번이 두 번째였습니다.

  4. 그날 그 플랫폼 자동화는 전면 정지됐어요. 사고는 그날 안에 풀리지 않았습니다.

  5. 다음 날 저는 그 플랫폼에 글 올리는 일을 그만두기로 정했어요. 자동도 수동도요.

준비를 다 해 둔 원고 한 편은 올리지 못했습니다.

잘못한 쪽은 플랫폼이 아니라 제 자동화입니다.

무엇이 문제였나 — 효력 끝난 출입증으로 같은 문을 여섯 번

로그인은 건물 출입증 같은 것이에요. 한 번 확인받으면 그다음부터는 출입증만 보여 주고 드나듭니다.

제 자동화는 그 출입증을 복사해 들고 다니는 심부름꾼이었습니다. 문제는 그 출입증이 시간이 지나거나 새로 바뀌면 효력이 사라진다는 점이에요.

닫힌 문 앞에서 금이 간 출입증을 든 사람, 문에는 두드린 흔적 같은 옅은 원이 여러 겹 번져 있다
AI로 생성한 설명용 이미지입니다. 실제 화면이 아닙니다.

심부름꾼은 두드리기 전에 출입증이 살았는지 확인하지 않았어요. 그래서 효력이 끝난 출입증을 들고 같은 문을 계속 두드렸습니다. 서버는 그때마다 "당신이 누군지 모르겠다"고 돌려줬어요.

플랫폼은 그걸 그냥 넘기지 않습니다. 짧은 시간에 반복되는 인증 실패를 이상 징후로 보거든요.

비유가 맞지 않는 부분도 있어요. 출입증은 눈으로 보면 날짜가 보이지만, 로그인 정보는 써 보기 전까지 살았는지 알 수 없습니다.

더 아픈 것은 그다음이에요. 저장해 둔 옛 로그인 정보를 매번 집어넣으면 상황이 더 나빠집니다. 서버가 새로 내준 표를 옛 표로 덮어쓰기 때문이에요.

왜 여섯 번이나 돌았을까

숫자를 하나 못 박아야 해요. 여섯 번은 글 올리는 프로그램이 실행된 횟수입니다. 그중 두 번은 올리지 않고 시험만 한 것이고, 네 번은 실제 등록 시도였어요. 서버에 몇 건의 요청이 갔는지는 기록에 없습니다.

실패 메시지는 계속 떴습니다. 조용한 사고가 아니었어요. 그런데도 실행은 멈추지 않았습니다.

실패에는 두 종류가 있어요.

  • 다시 하면 풀리는 실패. 인터넷이 잠깐 끊긴 경우가 그렇습니다.

  • 다시 해도 풀리지 않는 실패. 로그인이 끊긴 경우가 그래요.

뒤쪽을 앞쪽처럼 다루면 결과가 아니라 횟수만 쌓입니다.

그때 제 자동화에 멈춤이 한 자리에는 있었어요. 로그인 화면으로 튕기면 한 번 더 해 보고, 그래도 안 되면 멈추는 자리가 사고 전에도 있었습니다. 문제는 사고가 난 자리가 거기가 아니었다는 점이에요. 등록 요청이 "인증 실패"를 돌려준 자리에는 멈춤이 없었고, 그 응답은 기록에만 남았습니다.

저는 결국 이 플랫폼이 AI와 잘 안 맞는 게 아니냐고 물었습니다. 플랫폼 탓으로 돌리기 쉬운 자리였어요. 하지만 기록이 가리킨 원인은 죽은 로그인 정보로 반복된 등록 요청이었습니다.

어떻게 고쳤나 — 돌리기 전에 확인, 실패하면 멈춤

그 플랫폼에는 다시 쓰지 않지만, 규칙은 프로그램과 인계 문서에 남겼어요.

  1. 먼저 전부 멈췄어요. 자동이든 수동이든 그 플랫폼 스크립트는 실행하지 않는다고 인계 문서에 못 박았습니다. 가장 먼저 읽는 자리에 적혀 있어요.

  2. 돌리기 전에 로그인 상태를 먼저 확인합니다. 글쓰기 화면으로 바로 가지 않고, 첫 화면·내 정보·목적지 순서로 열어 봅니다. 이렇게 보이면 성공이에요. 필요한 로그인 정보가 있는지와 새로 바뀌었는지가 기록에 찍히고, 저장 정보가 갱신됩니다.

  3. 재시도는 딱 한 번까지예요. 로그인 화면으로 튕긴 그때만, 매번이 아니라 한 번 다시 가 봅니다.

  4. 그래도 안 되면 사람을 부릅니다. 같은 창에서 사람이 직접 로그인할 때까지 기다린 뒤, 그 상태로 이어서 올려요. 옵션을 켜면 기다리는 시간은 10분입니다.

  5. 사람도 오지 않으면 멈춥니다. 오류를 한 줄 적고 창을 닫고 끝내요. 글은 올리지 않습니다.

  6. 해제된 뒤에도 실행은 한 번만. 인계 문서에 그렇게 적어 뒀어요.

프로그램에 새로 넣은 것은 2번과 4번이에요. 5번의 멈춤은 사고 전에도 그 프로그램 안에 있었습니다. 실제 코드에서 뜻만 남겨 줄이면 이런 모양입니다.

페이지를_연다(글쓰기_주소)
if "로그인" in 지금_주소:          # 로그인 창으로 튕겼다 = 로그인이 끊겼다
    기록("로그인 끊김 — 사람이 직접 로그인해야 합니다")
    창을_닫고_끝낸다()             # 다시 시도하지 않는다

글은 올라가지 않고, 오류 한 줄만 남고 창이 닫힙니다.

보호조치를 푸는 일은 제가 직접 해야 합니다. 사람이 로그인하고 그 창에서 이어 올리는 방식도 보호조치를 피해 가는 길이 아니에요. 사람 확인을 거치는 쪽으로 되돌린 것입니다.

자기 것에 대 볼 질문은 하나예요. 이 자동화는 로그인이 끊기면 멈추나요, 계속 두드리나요?

자동화에는 "다시 시도"보다 "멈춤"을 먼저 넣으세요. 로그인 실패는 다시 해서 풀리는 실패가 아닙니다. 그 멈춤이 한 자리에만 있으면, 자동화는 다른 자리에서 계속 두드리다 제 계정까지 묶어 버립니다.

용어 풀이

  • 로그인 세션 건물 출입증 같은 것이에요. 정확히는 로그인한 뒤 서버가 "이 사람 확인됐다"고 기억해 두는 임시 표입니다. 시간이 지나거나 새로 바뀌면 효력이 사라져요.

  • 쿠키 출입증을 넣어 두는 주머니예요. 정확히는 사이트가 내 브라우저에 맡기는 작은 쪽지입니다.

  • 스크립트 사람이 하던 클릭 순서를 적어 둔 심부름 쪽지예요. 정확히는 컴퓨터가 위에서 아래로 실행하는 명령 묶음입니다.

  • 재시도 안 됐을 때 한 번 더 해 보는 것이에요. 원인이 그대로면 횟수만 쌓입니다.

  • 계정 보호조치 수상한 출입이 보이면 관리실이 문을 잠그는 것과 비슷해요. 정확히는 플랫폼이 내 계정의 로그인을 막는 조치입니다.

공유

댓글

0/2000

아직 댓글이 없습니다. 첫 번째 댓글을 남겨보세요.

로그인이 끊긴 걸 모르고 6번 더 두드렸다 — 글 올리는 봇이 내 계정을 잠갔다 | Hun's DEV | Hun's DEV