Skip to content

ree9622/kcmes-auto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

민방위 사이버교육 자동 수강 스크립트 (kcmes-auto)

민방위 사이버교육센터 www.kcmes.kr 의 강의를 자동으로 순차 재생해주는 Tampermonkey(템퍼몽키) 유저 스크립트입니다.

기능

  • /edu/list 에서 활성화된 "교육 시작" / "평가 시작" 버튼을 자동 클릭
  • 강의 페이지 /edu/detail 에서 자동 재생 유지 (일시정지 감지 시 자동 재개)
  • 영상이 끝나면 "다음 강의 이동" 버튼을 자동 클릭, 없으면 "목록" 으로 복귀
  • 마지막 영상 종료 모달 감지 → "평가하기" 자동 클릭
  • 평가(시험) 자동 풀이/api/quiz/get/crew 응답의 description 필드를 인터셉트하여 정답 매칭
  • 불합격 시 결과 페이지의 정답 CSS 클래스(css-u1eisi)로 정답 DB 학습 → localStorage 저장 → 재평가 시 우선 사용
  • 합격 시 설문조사 자동 응답 + 제출 (CONFIG.SURVEY로 본인 답 설정)
  • 설문 제출 후 "교육이 모두 종료되었습니다" 모달 감지 → "이수증 확인하기" 자동 클릭 (/certificate 이동)
  • "비정상적인 수강" 경고 모달 감지 시 자동화 즉시 중단
  • 배속(RATE) 설정 가능. 기본값 1 (정속, 안전). 2~3 상향 시 서버 감지 위험 증가

설치 방법

  1. 브라우저에 Tampermonkey 확장 설치
  2. Tampermonkey 대시보드 → + (새 스크립트 추가)
  3. 기본 템플릿 전부 삭제 후 kcmes-auto.user.js 내용 복사 붙여넣기
  4. Ctrl + S 로 저장, 활성화 ON
  5. https://www.kcmes.kr/edu/list 접속

설정

스크립트 상단 상수로 조정:

변수 기본값 설명
RATE 1 재생 배속. 1 = 정속(안전), 2~3 = 빨라짐(감지 위험). 4 이상은 서버가 "비정상 수강"으로 판정
COOLDOWN_MS 4000 자동 클릭 사이 최소 대기 시간 (ms)
LOOP_MS 1500 페이지 상태 감시 주기 (ms)
AUTO_QUIZ true 평가 자동 풀이 활성화
AUTO_SURVEY true 설문 자동 제출 활성화
AUTO_RETRY true 평가 불합격 시 재평가 자동 실행
SURVEY {...} 설문 응답 (Q1~Q9, 본인에 맞게 수정 필수 — 성별/연령 등)

평가(시험) 자동화 원리

/api/quiz/get/crew 응답에 description(해설) 필드가 포함되어 있습니다:

{
  "question": "민방위 제도가 공식적으로 시작된 해는?",
  "items": "1951년#1975년#1990년#2005년",
  "description": "1975년 민방위기본법 제정으로 민방위대가 창설됨"
}

스크립트는 @run-at document-start 에서 fetch/XMLHttpRequest를 인터셉트하여 응답을 window.__kcmes_bank 에 캐시합니다. 각 문제에서 DOM 질문 텍스트로 bank를 매칭한 뒤 descriptionitems 의 문자 2-gram 중첩이 가장 많은 선택지를 정답으로 선택합니다.

"옳지 않은 것"을 묻는 부정문은 description 매칭이 약할 때 최저 매칭을 선택하는 휴리스틱을 적용합니다. 실전에선 한 번에 90점 이상 합격하는 편입니다 (70점이 이수 기준).

불합격 시 결과 페이지 오답 해설의 li.css-u1eisi (정답 표시 클래스)를 스크랩하여 localStorage.kcmes_quiz_answer_db 에 누적 저장합니다. 다음 재평가 시 이 DB가 우선 사용되어 100% 정답 풀이가 가능합니다.

설문 자동 응답

합격 후 /edu/survey 진입 시 CONFIG.SURVEY 의 값으로 라디오를 선택하고 textarea를 채운 뒤 "설문 제출하고 이수 완료하기" 버튼을 누릅니다. 본인 성별/연령은 반드시 수정하세요.

동작 확인

F12 개발자도구 → Console 탭에서 [kcmes-auto] 로그 확인:

[kcmes-auto] 로드됨. RATE= 1
[kcmes-auto] 교육 시작 클릭
[kcmes-auto] ended 훅 설치. duration= 1205 s
[kcmes-auto] 영상 종료 감지
[kcmes-auto] 클릭: 다음 강의 이동

서버 감지 메커니즘

분석 결과, 서버는 /api/record POST 요청에 포함된 currentWatchTime 과 실제 경과 시간(wallclock)을 비교합니다:

{
  "userId": 1297077,
  "educationId": 6,
  "lectureId": 39,
  "currentWatchTime": 348,
  "videoLength": 1205,
  "complete": false
}

currentWatchTime 증가량 ÷ 실제 경과 초 > 임계치(추정 ~4x)면 "비정상 수강"으로 플래그됩니다. 따라서:

  • 쿠키/localStorage 등 브라우저 저장소를 건드려도 소용없음 (시간 비교는 서버가 함)
  • 페이로드 위조도 서버 자체 시계와 비교되므로 차단됨
  • 유일한 안전 사용법 = 배속을 낮게 유지 (RATE = 1 권장, 최대 2~3)

주의사항

  • 이 스크립트는 사람의 수동 클릭만 자동화합니다. 시청 자체는 실제 재생 시간을 소요합니다.
  • 탭을 포그라운드로 유지 하세요. 백그라운드 탭은 브라우저가 비디오 재생을 throttle 하여 멈출 수 있습니다.
  • 민방위 사이버교육은 미이수 시 과태료 대상입니다. 불필요하게 감지 위험을 감수하지 마세요.
  • DOM 구조가 변경되면 버튼 셀렉터가 맞지 않을 수 있습니다. 콘솔 로그를 확인하고 정규식을 조정하세요.
  • 평가/설문 자동화는 설치 직후 첫 세션부터 동작하려면 스크립트가 document-start 에 fetch 인터셉트를 설치해야 합니다. 이미 평가를 진행 중인 세션에선 정답 bank를 얻지 못하므로, 평가를 시작하기 전 페이지를 새로 고침한 뒤 "평가 시작"을 누르세요.

트러블슈팅

스크립트가 실행되지 않음

  • Tampermonkey 대시보드에서 활성화 ON 확인
  • @matchhttps://www.kcmes.kr/* 인지 확인 (exact 매칭 아님)
  • 콘솔에 [kcmes-auto] 로드됨 로그 확인. 없으면 스크립트 미실행

"다음 강의 이동" 버튼이 감지되지 않음

콘솔에서 실제 버튼 텍스트 확인:

Array.from(document.querySelectorAll('button,a')).map(el => el.textContent.trim()).filter(t => t.includes('강의'))

정규식 /다음\s*강의/ 를 실제 텍스트에 맞게 수정.

영상이 자동 재생되지 않음

브라우저 자동재생 정책으로 첫 재생은 사용자 상호작용이 필요할 수 있음. 강의 페이지에서 한 번 재생 버튼을 클릭하면 이후부터는 자동으로 동작합니다.

검색 키워드

민방위, 민방위교육, 민방위 사이버교육, 사이버교육, 시흥시 민방위, kcmes, kcmes.kr, 한국공교육원, kpec, 자동 수강, 자동 재생, 자동 스킵, 자동 건너뛰기, 동영상 자동, 강의 자동, 배속, Tampermonkey, 템퍼몽키, Userscript, 유저스크립트, 그리스몽키, Greasemonkey, 민방위 배속, 민방위 자동, 민방위 스크립트, 민방위 꼼수, 민방위 치트, 민방위 빠르게, 사이버교육 자동, 사이버교육 배속, 사이버교육 스크립트, 온라인 교육 자동화

면책

  • 이 프로젝트는 학습 및 연구 목적으로 제공됩니다.
  • 이 스크립트 사용으로 발생하는 모든 결과(이수 기록 무효, 재수강 요구, 과태료 등)는 사용자 본인의 책임입니다.
  • 민방위 기본법 및 관련 규정을 숙지하고 사용하세요.

라이선스

MIT License

About

민방위 사이버교육 (www.kcmes.kr) 자동 수강 Tampermonkey 유저 스크립트 - 자동 재생 + 자동 다음 강의 이동

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors