Chrome Extension을 통한 수강신청 사이트 키 금지 기능 무효화
아직 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
[*] Special Thanks to 권태국님
http://taeguk2.blogspot.com/2015/06/chrome-extension-auto.html
'Codes > Javascript' 카테고리의 다른 글
How to show image, not download in nodejs express (0) | 2021.02.21 |
---|---|
Javascript Nullish coalescing operator (0) | 2020.07.28 |
Pub/Sub 계층을 통한 프로그래밍 (0) | 2020.02.11 |
javascript 일반 함수와 화살표 함수 (0) | 2018.07.22 |
nCTF Framework 소개 (0) | 2018.06.28 |