전체 글 33

발행 자동화를 스케줄러로 무인 실행하기

발행 스크립트를 손으로 실행하면 자동화의 절반만 된 것입니다. 정해진 시각에 사람 개입 없이 도는 스케줄러가 있어야 완성입니다. 이 글은 발행 워커를 주기적으로 무인 실행하도록 구성하면서 지킨 원칙과 겪은 함정을 정리한 기록입니다.무인 실행의 기본 구조스케줄러가 몇 분마다 워커를 깨웁니다. 워커는 매번 발행 대기열을 확인하고, 발행 시각이 지난 글이 있으면 처리하고, 없으면 조용히 끝냅니다. 핵심은 스케줄러 자체가 판단하지 않는다는 점입니다. 스케줄러는 그저 주기적으로 트리거만 하고, 무엇을 발행할지는 대기열이 결정합니다. 이렇게 분리하면 발행 규칙을 바꿀 때 스케줄러를 건드릴 필요가 없습니다.이 구조에서 스케줄러의 주기는 정밀할 필요가 없습니다. 발행 시각을 스케줄러가 아니라 대기열의 각 글이 갖고 있..

비밀번호 없이 로그인 세션 유지하기 (브라우저 자동화)

브라우저 자동화로 로그인이 필요한 사이트를 다룰 때 가장 곤란한 지점이 로그인입니다. 계정 비밀번호를 스크립트에 넣는 건 보안상 최악이고, 2단계 인증이 걸리면 어차피 자동 로그인은 막힙니다. 이 글은 비밀번호를 코드에 넣지 않고 로그인 상태를 재사용하는 방법입니다.왜 비밀번호를 스크립트에 넣으면 안 되나비밀번호를 스크립트나 설정 파일에 두면 그 파일이 유출되는 순간 계정이 통째로 넘어갑니다. 암호화해서 저장해도 실행 시점에는 결국 복호화되어 메모리에 올라갑니다. 게다가 요즘 로그인은 소셜 계정을 거치는 경우가 많고 2단계 인증도 흔해서, 아이디와 비밀번호만으로는 자동 로그인 자체가 안 됩니다. 방향을 바꿔야 합니다.핵심 발상: 이미 로그인된 브라우저를 빌린다발상의 전환은 자동화 도구가 로그인을 대신하게..

브라우저 자동화에서 값을 넣어도 버튼이 안 켜지는 이유

브라우저 자동화로 입력창에 값을 채우는 건 쉬워 보입니다. 요소의 value에 문자열을 넣고 input 이벤트를 발생시키면 끝일 것 같습니다. 그런데 저장 버튼이 비활성 상태 그대로거나, 저장은 됐는데 값이 빈 채로 남는 경우가 있습니다. 이 글은 왜 그런지, 어떻게 우회하는지에 대한 기록입니다.증상: 값은 보이는데 상태는 비어 있다입력창에 분명히 글자가 들어가 있습니다. 화면으로 보면 완벽합니다. 그런데 저장 버튼이 여전히 비활성입니다. 억지로 저장을 눌러도 빈 값으로 저장됩니다. 값이 화면에는 있는데 실제로는 없는, 이상한 상태입니다.el.value = 'text';el.dispatchEvent(new Event('input', {bubbles:true}));screen : has textbutton..