adb로 실기기를 직접 조종해 소셜을 자동 운영한다고 썼습니다. 그 글은 "CAPTCHA 체크포인트가 벽이다"에서 끝났습니다. 이번엔 그 벽 너머 이야기입니다 — 한 계정이 아예 정지됐고, 저는 원인을 완전히 잘못 짚고 있었습니다.
먼저 질문 하나. 당신의 자동화는 진짜 손가락처럼 보입니까, 아니면 그냥 좌표를 찍고 있습니까? 저는 이 둘이 같은 줄 알았습니다.
내가 틀린 가설: "많이 해서 걸렸다"
계정이 정지됐을 때 제 첫 반응은 "볼륨을 줄이자"였습니다. 캡을 낮추고, 간격을 벌리고. 그런데 결정적인 반박이 있었습니다.
사람이 직접 손으로 같은 계정에서 맞팔·팔로우를 수십 개, 며칠에 나눠 했는데 — 안 걸렸습니다. 봇은 그보다 적게 하고도 걸렸습니다.
그러면 횟수가 원인일 리 없습니다. 사람 손과 봇의 차이는 개수가 아니라 지문입니다.
adb 탭의 정체
adb shell input tap x y가 만드는 터치 이벤트를 뜯어보면:
- 압력 0. 진짜 손가락은 압력 값이 있습니다.
- 접촉 면적 0. 손가락은 타원형 접촉 영역을 남깁니다.
- 속도 0. down과 up이 사실상 동시입니다. 사람은 누르고 떼는 데 시간이 걸립니다.
- 정수 픽셀, 완벽한 직선. 스와이프가 자로 그은 듯 곧습니다.
플랫폼의 이상탐지 ML이 보는 건 이겁니다. "몇 번 했나"가 아니라 "이 터치가 사람 손에서 나왔나". 합성 입력은 여기서 지문이 찍힙니다.
내가 스스로 판 함정
더 나쁜 건, 제가 "깨끗한 상태로 시작하자"며 넣은 최적화가 오히려 신호를 키웠다는 겁니다.
계정을 전환할 때마다 앱을 강제종료하고 다시 켰습니다. 콜드 런치 → 곧바로 팔로워 목록 직행 → 맞팔 연타. 사람은 앱을 강제종료하지 않습니다. 켜면 피드부터 구경합니다. "앱 죽였다 켜자마자 대량 액션"은 사람이 절대 안 하는 동작 — 제가 봇 신호를 손수 추가한 셈이었습니다.
여기에 얹힌 다른 신호들:
- 고정 X 좌표로 목록을 일직선 하강. 버튼을 x=814에 고정하고 y만 내려찍었습니다. 기계 행진입니다.
- 한 기기에서 여러 계정 급속 전환. 플랫폼은 이걸 연결된 계정 클러스터로 묶습니다.
- 브라우징 노이즈 제로. 피드 스크롤도, 멈칫도 없이 곧장 팔로워 목록으로.
당신이라면?
여기서 갈림길입니다. 탭 좌표에 지터를 조금 더 주고 "이 정도면 사람처럼 보이겠지" 하고 넘어가겠습니까 — 아니면 합성 터치에는 못 넘는 천장이 있다는 걸 인정하겠습니까?
저는 후자를 택했습니다. 할 수 있는 건 다 했습니다:
- 계정마다 재시작 → 버스트당 1회로 되돌림(콜드 런치 직행 신호 제거).
- 브라우징 노이즈 주입 — 팔로워 목록 직행 전 피드를 몇 번 스크롤하고 랜덤하게 멈춥니다.
- 탭을 버튼 내부 랜덤 지점으로 — 고정 X 하강 탈피.
그리고 정직하게 인정하는 부분: 압력·속도 0인 합성 터치 자체는 input tap으로 못 고칩니다. 더 저수준(sendevent)으로 압력을 흉내낼 수는 있지만 기기마다 취약하고 깨지기 쉽습니다. 천장은 천장입니다.
진짜 손가락은 통과한다
정지 화면에는 "사람인지 확인" 절차가 있었습니다. 이건 사람이 그 기기에서 직접 풀어야 합니다. 봇이 대신 풀면? 그건 탐지 우회고, 밴을 악화시킬 뿐입니다.
그리고 그게 이 글의 핵심을 그대로 증명합니다. 같은 화면, 같은 계정 — 진짜 손가락으로 누르면 통과합니다. 압력이 있고, 속도가 있고, 접촉 면적이 있으니까. 봇은 못 넘는 그 검증을 사람 손은 그냥 넘습니다. 며칠 뒤 그 계정은 복구됐습니다. "활동이 기준을 따른다"는 회신과 함께.
그런데 쓰레드는 멀쩡합니다
같은 기기, 같은 adb, 같은 회사 인프라인데 쓰레드 자동화는 계속 잘 돕니다. 차이가 뭘까요.
쓰레드는 주제 검색 결과의 작성자에게 맞팔합니다 — 무작위 콜드 팔로우가 아니라 관심사가 겹치는 사람들. 그리고 사람 속도로, 시간대 버스트로, 낮은 볼륨으로 굽니다. 성격이 다르니 위험도 다릅니다. 그래도 방심은 안 합니다 — 같은 합성 터치 지문을 공유하니까요. 그래서 정지 사건 직후엔 쓰레드도 보수적으로 봅니다.
자가진단 3개
당신의 UI 자동화가 사람처럼 보이는지 지금 점검해 보세요.
- 콜드 런치 직후 곧바로 목표 액션을 합니까? 사람은 앱 켜고 뭔가를 먼저 봅니다.
- 탭 좌표가 고정입니까? 같은 픽셀 반복 = 지문. 버튼 안에서 흩뿌리세요.
- 액션 사이에 목적 없는 브라우징이 있습니까? 스크롤·멈칫이 0이면 그 자체가 신호입니다.
솔직한 부분
지문 완화를 다 넣어도 근본 천장은 그대로입니다. input tap은 끝내 진짜 손가락이 아닙니다. 그래서 결론은 기술이 아니라 태도 쪽입니다 — 자동화가 계정을 태우면 그건 자동화가 아니라 손실입니다. 공식 API로 되는 건 API로(안전하니까), 실기기 조종은 API가 안 여는 소량에만, 사람 속도로, 안전판을 겹겹이 깔고. 자기학습 그로스 루프를 아무리 잘 짜도 이 원칙 위에서만 의미가 있습니다.
지금 딱 하나만 확인해 보세요. 당신의 자동화 로그에서, 마지막 탭 좌표 열 개가 전부 같은 X입니까? 그렇다면 플랫폼도 그걸 보고 있습니다.