기술

자동화가 막히는 자리는 대개 브라우저 밖입니다

이틀 동안 브라우저 자동화가 세 번 멈췄습니다. 셋 다 코드가 틀려서가 아니었고, 셋 다 브라우저 안이 아니라 밖에서 막혔습니다. 막힌 자리를 정리해 두면 다음에 같은 곳에서 시간을 안 들입니다. 그리고 셋을 나란히 놓으니 처리 방법이 세 가지뿐이라는 것도 보였습니다.

방동걸 프로필 사진
(주)웨이스 대표이사

이틀 동안 브라우저 자동화가 세 번 멈췄습니다. 셋 다 코드가 틀려서가 아니었고, 셋 다 브라우저 안이 아니라 밖에서 막혔습니다.

막힌 자리를 정리해 두면 다음에 같은 곳에서 시간을 안 들입니다. 그리고 셋을 나란히 놓으니 처리 방법이 세 가지뿐이라는 것도 보였습니다.

자동화가 막히는 자리는 대개 브라우저 밖입니다 — 안쪽은 코드가 닿는 페이지, 주황 점선 바깥은 운영체제와 도구 정책
자동화가 막히는 자리는 대개 브라우저 밖입니다 — 안쪽은 코드가 닿는 페이지, 주황 점선 바깥은 운영체제와 도구 정책

첫째 — 파일 선택 창

파일을 올리는 버튼을 누르면 운영체제 파일 창이 뜹니다. 그 순간 자동화는 끝입니다. 창은 브라우저 밖이라 클릭도 입력도 닿지 않고, 열린 채로 두면 그다음 명령도 안 먹습니다.

흔히 떠올리는 우회는 다 막혀 있습니다. 보안상 input.value 에 경로를 넣을 수 없고, 좌표 클릭은 창이 브라우저 밖이라 안 되고, 드래그·드롭을 흉내 내려면 결국 File 객체가 필요합니다.

그런데 파일 창을 여는 것은 사이트가 아니라 그 페이지 안의 코드입니다. 대개 이렇게 생겼습니다.

const input = document.createElement('input');
input.type = 'file';
input.onchange = handle;
input.click(); // ← 여기서 OS 창이 열린다

그러면 그 한 줄만 못 하게 막으면 됩니다.

const original = HTMLInputElement.prototype.click;
HTMLInputElement.prototype.click = function () {
 if (this.type === 'file') return; // 파일 창만 안 연다
 return original.apply(this, arguments);
};

이렇게 두고 버튼을 누르면 창은 안 뜨는데 input 은 DOM 에 그대로 남습니다. 그 요소에 파일을 넣으면 사이트가 보기에 사람이 고른 것과 같습니다. 자동화 도구를 쓰신다면 이 지점이 setInputFiles 가 하는 일입니다.

함정 하나 — 위 코드에서 보이듯 input버튼을 누르는 순간 만들어집니다. 미리 찾아 두려고 DOM 을 뒤지면 아무것도 없습니다. 가로채기를 먼저 걸고, 버튼을 누르고, 그다음에 찾아야 합니다.

둘째 — 화면 녹화 권한

돌아가는 화면을 영상으로 남겨야 했는데 screencapturecould not create image from display 로 거부했습니다. 운영체제 권한 문제라 코드로 넘을 수 없습니다.

권한을 켜면 되지만, 켜려면 터미널을 다시 시작해야 하고 그러면 하던 작업이 끊깁니다.

여기서 방향을 바꿨습니다. 밖에서 못 찍으면, 찍히는 쪽이 스스로 찍게 합니다. 그 화면이 제가 고칠 수 있는 프로그램이라면 「N밀리초마다 자기 창을 저장하라」는 옵션을 하나 넣는 편이 빠릅니다. 실제로 그렇게 하니 프레임당 비용도 오히려 낮아졌습니다. 창 밖에서 화면 전체를 뜨는 것보다 안에서 위젯 하나를 그리는 것이 싸기 때문입니다.

밖에서 관측하려다 막히면, 안에서 내보내게 만드는 쪽을 봅니다.

셋째 — 도메인 차단

세 번째는 못 넘었습니다.

쓰고 있던 브라우저 확장이 특정 도메인 전체를 막고 있었습니다. 사이트 권한을 열어도 같았습니다. 사용자가 켜는 권한과 별개인 내장 차단 목록이었기 때문입니다.

여기서 시간을 더 쓰면 안 됩니다. 새 탭에서도, 다른 하위 도메인에서도 같은 응답이면 그건 설정이 아니라 정책입니다.

대신 사람이 들이는 시간을 줄이는 쪽으로 갔습니다. 붙여넣을 본문을 클립보드에 담아 두고, 이미지가 든 폴더를 열어 두고, 어떤 값이 어디에 들어가는지 순서대로 적어 둡니다. 자동화는 못 해도, 사람이 그 자리에서 들이는 시간은 줄일 수 있습니다.

셋을 나란히 놓으면

처리 방법이 세 가지뿐이었습니다.

막힌 것

어디가 경계인가

처리

파일 선택 창

페이지 코드가 OS 창을 연다

경계를 옮긴다 — 창이 열리기 전에 안에서 가로챈다

화면 녹화 권한

운영체제가 화면을 안 준다

안쪽으로 옮긴다 — 찍히는 프로그램이 스스로 저장하게 한다

도메인 차단

도구의 정책이다

인정하고 비용을 줄인다 — 사람 몫으로 남기되 준비를 다 해 둔다

뚫는 것은 셋 중에 없습니다. 경계를 옮기거나, 안쪽으로 옮기거나, 인정하거나입니다. 그리고 어느 쪽인지는 대개 두세 번 시도해 보면 갈립니다. 같은 응답이 세 번 나오면 그건 세 번째입니다.

덤 — 같은 자리에서 만난 함정 셋

파일은 올라갔는데 그다음에 걸린 것들입니다. 사이트마다 다르고, 어느 문서에도 안 적혀 있습니다.

  • 미디어를 붙인 뒤에는 작성자를 못 바꾸는 곳이 있습니다. 개인 계정에서 회사 계정으로 바꾸려면 첨부를 지우라고 합니다. 순서를 뒤집어야 합니다 — 작성자를 먼저 고르고 파일을 붙입니다.

  • 본문에 주소를 넣으면 링크 카드가 첨부를 밀어내는 곳이 있습니다. 영상을 붙였는데 주소를 쓰는 순간 카드로 바뀌어 있었습니다. 카드를 지우고 파일을 다시 붙이면 됩니다.

  • 임시 저장된 초안이 되살아납니다. 작성창을 열었는데 다른 작업의 글이 들어 있었습니다. 확인창이 뜨면 「이어서」가 아니라 「새로」를 고릅니다. 안 뜨는 곳도 있으니 붙여넣기 전에 창이 비어 있는지 봅니다.

셋 다 화면을 한 번 보면 알 수 있는 것들입니다. 반대로 말하면, 보지 않고 다음 단계로 넘어가면 그대로 나갑니다.

정리

자동화가 멈추면 코드부터 보게 됩니다. 그런데 이틀 동안 세 번 다 코드가 아니었습니다. 운영체제, 권한, 도구 정책이었습니다.

그래서 요즘은 막히면 먼저 묻습니다. 이 경계가 브라우저 안인가 밖인가. 안이면 고치고, 밖이면 옮기거나 인정합니다. 밖에 있는 것을 안에서 뚫으려고 하면 그 시간이 제일 오래 걸립니다.

여러분은 자동화가 막혔을 때, 그것이 코드 문제인지 경계 문제인지 무엇으로 가르십니까.

이 글이 도움이 되셨다면 공유해 주세요

새 글이 올라오면 메일로 알려드립니다

제조 현장에서 확인한 것들을 기록합니다. 회사 홍보 메일은 보내지 않고, 언제든 해지할 수 있습니다.

우리 공장은 지금 어느 단계일까요?

제조 AI 성숙도 자가진단 — 회사 정보 없이 10문항이면 됩니다.

무료 진단 받기
방동걸 프로필 사진
작성자
(주)웨이스 대표이사

제조 AI 운영체제 VEXPLOR를 만들고 있습니다. 스마트공장 구축 현장에서 데이터 표준화·온톨로지·디지털트윈·자율형공장을 다루며, 이 블로그에는 현장에서 실제로 부딪힌 문제와 그때 내린 판단을 씁니다.

contact@wace.me

이 문제를 실제 현장에서 풀고 있습니다

(주)웨이스는 제조 AI 운영체제 VEXPLOR로 데이터 표준화부터 자율형공장까지 만들어가고 있습니다. 공장 밖 사무 업무를 AI로 바꾸는 일을 우리가 먼저 해 보고 정리한 것입니다.