본문 바로가기

업무 자동화

자바스크립트 파일 다운로더

반응형
개발자도구 이용
  • 현재 페이지에 존재하는 모든 자바스크립트 목록 조회
 document.querySelectorAll("script[src]").forEach(function(item) { console.log(item.src) })
  • 현재 페이지에 존재하는 자바스크립트 목록 조회 및 다운로드
 function download_logic(datatype, data, filename) {
               var a = document.createElement("a");
               a.href = `${datatype};charset=utf-8;base64,${base64Encode(data)}`;
               a.setAttribute("download", filename);
               a.click();
 }
 
 function js_download(scr_tag,extension)
 {
   for ( js_addr of scr_tag ) 
   {
     let js_fname_spl = js_addr.split('/');
     let js_fname = js_fname_spl[js_fname_spl.length-1];
 
     try {
         ( async() => {
            const x =  await fetch(js_addr);
            download_logic("data:text/plain", await x.text() , js_fname.replace('.js',extension) );
         })();
      } catch (error) { }
   } 
   
   return '다운 완료';
 }
 
 function base64Encode( stringInput ) {
 			var normalizedInput = encodeURIComponent( stringInput ).replace(
 				/%([0-9A-F]{2})/g,
 				function toSolidBytes( $0, hex ) {
  
 					return( String.fromCharCode( "0x" + hex ) );
  
 				}
 			);
  			return( btoa( normalizedInput ) );
  		}
 
 
 function select_js(opt) {
   
     let scr_tag = []
     var re = new RegExp(`${location.origin}`,"gi");
 
     document.querySelectorAll("script[src]").forEach(
       function(item) { 
 
       if ( opt == 'origin' ) { 
       if ( item.src.match(re) ) scr_tag.push(item.src); }
       else { scr_tag.push(item.src); }
         
       }
 
     )
     scr_tag = scr_tag.sort()
     table(scr_tag)
     return scr_tag;
 }
 
 // js 파일 조회  
 // let scr_tag = select_js('all') = 페이지에 모든 js 조회
 // let scr_tag = select_js('origin') = origin에 해당하는 js 조회   
 let scr_tag = select_js('origin');
 
 // js 파일 다운로드
 // js_download(scr_tag,'.js') = 조회한 js 파일 다운 후 확장자를 js로 저장
 js_download(scr_tag,'.txt');



크롬 확장 플러그인 이용
Save All Resources 확장 플러그인을 이용하면 js 뿐만 아니라 모든 리소스를 다운로드할 수 있다.
https://chrome.google.com/webstore/detail/save-all-resources/abpdnfjocnmdomablahdcfnoggeeiedb?hl=en

 

위 플러그인 사용 시 해당 페이지에 존재하는 모든 리소스 파일을 UI 폴더 구조를 유지하면서 다운로드한다.

플러그인 등록 후 크롬을 재시작하면 개발자도구에 ResourcesSaver라는 탭이 생성되고
원하는 사이트의 페이지로 이동하여 SaveAllResources 버튼을 클릭하면 리소스 파일을 다운받을 수 있다.
 


반응형

'업무 자동화' 카테고리의 다른 글

VBA 메크로 모음  (0) 2021.04.28
VBA 행 수를 기준으로 파일 분할  (0) 2021.04.13
아이템 복사기  (0) 2021.03.17
소스코드 괄호 검사  (1) 2021.03.12
xss 인코딩 도구  (0) 2021.03.02