최신 Juchao 암호화 매개 변수 크래킹-실제 테스트 가능

면책 조항 :이 기사는 연구 및 연구용이며 불법적 인 용도로 사용하는 것은 금지되어 있습니다. 그렇지 않으면 귀하의 책임입니다. 침해 사항이있는 경우 통지하고 삭제하십시오. 감사합니다!

문제 설명:

Juchao 웹 페이지 에서 데이터 수집 크롤러 에 대해 인터넷을 검색 했는데 제가 작성한 내용과 다른 것 같습니다. 아마주의 깊게 읽지 않았을 것입니다. 금융 데이터 및 기타 정보를 가져 왔기 때문일 것입니다.하지만 그는 헤더에 암호화 된 매개 변수 mcode를 요청했습니다. 말할 것도없이 코드를 직접 엽니 다.


해결책:


1. 요청을 잡으십시오. 여기에 4 개의 주요 매개 변수가 있습니다. 약.
여기에 사진 설명 삽입

2. 그런 다음 mcode를 직접 검색합니다. 일반적으로 첫 번째 링크를 직접 클릭하고 형식을 지정하고 mcode를 검색합니다. mcode가 indexcode.getResCode () 메서드에 의해 생성 된 것을 볼 수 있으므로이 메서드의 항목 만 찾으면됩니다. mcode 생성 방법을 찾을 수 있습니다.

여기에 사진 설명 삽입


3.이 방법이 있는지 확인하기위한 콘솔 출력 (true)을 계속 클릭합니다.
여기에 사진 설명 삽입

4. window.JSonToCSV.missjson 메소드가 사용되고 타임 스탬프가 전달되었음을 알 수 있습니다.

여기에 사진 설명 삽입


5.이 함수를 빼고 다시 작성해 봅시다.

		function get_mcode(input) {
    
      
			var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv"   + "wxyz0123456789+/" + "=";  
			var output = "";  
			var chr1, chr2, chr3 = "";  
			var enc1, enc2, enc3, enc4 = "";  
			var i = 0;  
			do {
    
      
				chr1 = input.charCodeAt(i++);  
				chr2 = input.charCodeAt(i++);  
				chr3 = input.charCodeAt(i++);  
				enc1 = chr1 >> 2;  
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  
				enc4 = chr3 & 63;  
				if (isNaN(chr2)) {
    
      
					enc3 = enc4 = 64;  
				} else if (isNaN(chr3)) {
    
      
					enc4 = 64;  
				}  
				output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2)  
						+ keyStr.charAt(enc3) + keyStr.charAt(enc4);  
				chr1 = chr2 = chr3 = "";  
				enc1 = enc2 = enc3 = enc4 = "";  
			} while (i < input.length);  
	  
			return output;  
		}  
    };

6. 암호화 된 매개 변수는 pyexecjs 실행 후 얻을 수 있으며 소스 코드도 게시됩니다.


# -*- coding: utf-8 -*-
import time
import execjs

def get_mcode():
    js_str = '''
        function mcode(input){
			var keyStr = "ABCDEFGHIJKLMNOP" + "QRSTUVWXYZabcdef" + "ghijklmnopqrstuv"   + "wxyz0123456789+/" + "=";  
			var output = "";  
			var chr1, chr2, chr3 = "";  
			var enc1, enc2, enc3, enc4 = "";  
			var i = 0;  
			do {  
				chr1 = input.charCodeAt(i++);  
				chr2 = input.charCodeAt(i++);  
				chr3 = input.charCodeAt(i++);  
				enc1 = chr1 >> 2;  
				enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);  
				enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);  
				enc4 = chr3 & 63;  
				if (isNaN(chr2)) {  
					enc3 = enc4 = 64;  
				} else if (isNaN(chr3)) {  
					enc4 = 64;  
				}  
				output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);  
				chr1 = chr2 = chr3 = "";  
				enc1 = enc2 = enc3 = enc4 = "";  
			} while (i < input.length);  
        return output
    }
    '''
    input = str(int(time.time()))
    js = execjs.compile(js_str)  # 编译执行js代码
    jschl_answer = js.call('mcode', input)   # 调用函数
    return jschl_answer

여기에 사진 설명 삽입

추천

출처blog.csdn.net/qq_26079939/article/details/108491371