프로그래밍/Javascript

Chrome Extension을 통한 수강신청 사이트 키 금지 기능 무효화

2020. 2. 22. 02:18

GS칼텍스 레프트 이소영 선수

 아직 20학번 새내기라서 수강신청을 해본 적은 없다. 그러나 주변에서 [Tab]와 [Spacebar]만으로 수강신청을 마스터할 수 있었지만 대학교 수강신청 사이트에서 이를 막는 추세라서 이제는 빠르게 수강신청하기가 어려워졌다는 소문을 들은 적이 있다. 오늘 학번을 발급받은 김에 이 현상을 확인해보려고 경희대학교 수강신청 사이트에 접속해보았는데 역시나 F5, 스페이스바 등의 키가 금지되어있었다.

 

이 기능으로 트래픽 크게 줄긴 했을듯ㅋㅋㅋ

 

 해당 키를 금지하는 기능은 당연히 Javascript 단에서 onkeydown 등의 event를 일일이 검사하는 방식으로 수행될 것이라고 생각했다. 역시는 역시. 아래는 경희대학교 수강신청 사이트에서 키 입력 금지 메커니즘을 구현한 코드이다. 

 

function noKeyCheck(){	
	if (event.keyCode == 116) {
		msgAlert("F5키를 사용 할 수 없습니다.");
		event.preventDefault();
        return false;
    } else if(event.ctrlKey && (event.keyCode == 78 || event.keyCode == 82)) {
        return false;
     // 엔터키, 스페이스 키 막기 - 엔터키는 허용( 로그인 페이지에서만 )    
    //} else if (event.keyCode === 13 || event.keyCode === 32) {
    } else if (event.keyCode === 32) {
    	msgAlert("매크로 방지를 위해 스페이스바 키는 사용하실 수 없습니다.");
        event.preventDefault();
        return false;
    }
}
$(document).on("contextmenu",function(e){
	//alert("매크로 방지를 위해 마우스 오른클릭은 사용하실 수 없습니다.");
    return false;
});
document.onkeydown = noKeyCheck;

 

 경희대학교 수강신청 사이트는 document 안의 frame들이 여러 개 중첩되어 있어 해법을 찾는 과정에서 꽤 삽질을 하기도 했지만, 당연하게도 개발자 도구 Console에서 Javascript 를 조작하는 방법으로 쉽게 우회할 수 있었다. 그리고 이것을 Chrome Extension으로 구현하여 손쉽게 실행할 수 있으면 좋겠다고 생각해서 만들어보았다. Chrome Extenstion에서 는 Chrome 본 페이지와 다른 Sandbox를 통해 javascript를 실행하기 때문에 원칙적으로는 본 페이지에 영향을 줄 수 없는데 이것을 content_script 와 location.href = "javascript: function()"; 으로 해결하였다.

 

https://github.com/ch4n3-yoon/KyungHeeUniv-Sugang

 

ch4n3-yoon/KyungHeeUniv-Sugang

경희대학교 수강신청 시스템 키 입력 금지 무효화 및 자동화 프로젝트. Contribute to ch4n3-yoon/KyungHeeUniv-Sugang development by creating an account on GitHub.

github.com

 

[*] Special Thanks to 권태국

http://taeguk2.blogspot.com/2015/06/chrome-extension-auto.html