2010-11-22 5 views
0

일부 웹 사이트에 로그인을 시도하고 있습니다. 다른 사이트에서 이전에 해봤지만이 사이트는 더 복잡합니다. LIVE HTTP 헤더를 사용하여 게시 요청을 캡처했습니다. 게시물 요청이 올바르게 완료되었지만 어떤 이유로 인해 올바른 URL로 전송되지 않은 것으로 나타났습니다. 페이지 소스를 검토했으며이 양식이 JS를 사용하여 전송되고 있다고 생각합니다.컬 포스트와 자바 스크립트 도움이 필요하십니까

이것은 __VIEWSTATE 변수 후 포스트 인수에 추가 된 것입니다

:

&ctl00_Menu_MainMenu_ContextData=&ctl00%24middleContent%24TextBoxName=0526579737&ctl00%24middleContent%24TextBoxPass=LIRAN&ctl00%24middleContent%24TextBoxPriv=liran&ctl00%24middleContent%24CheckLicense=on 

이이 정보의 유효성을 검사하는 자바 스크립트 함수입니다 :

function Continue_Click() 
    { 
     var LabelError = document.getElementById('ctl00_middleContent_LabelError'); 
     var lnkButton1 = document.getElementById(middleContent + 'lnkButton1'); 
     var msg = validateLoginPeleNumRecognizeUser(document.getElementById('ctl00_middleContent_TextBoxName').value); 
     if (msg == '') 
     { 
      if (validateLoginPeleNumEmail(document.getElementById('ctl00_middleContent_TextBoxName').value)){ 
       musixMail = document.getElementById('ctl00_middleContent_TextBoxName').value; 
       var obj = document.getElementById('ctl00_middleContent_TextBoxPriv'); 
       if (obj != null && obj.value != '')      
        msg = validateLoginUserLogin(obj.value); 

       if (msg == '') 
       {       
        if(document.getElementById('ctl00_middleContent_CheckLicense').checked) 
        { 
         if(log.login('recognize')) 
         { 
          __doPostBack('ctl00$middleContent$lnkButton1',''); 
         } 
        } 
        else 
         LabelError.innerHTML = 'עליך להסכים לתנאי השימוש על מנת להמשיך לגלוש באתר'; 
       } 
       else 
        LabelError.innerHTML = msg; 
      } 
      else{ 
       msg = validateLoginPasswordLogin(document.getElementById('ctl00_middleContent_TextBoxPass').value); 
       if (msg == '')  
       { 
        var obj = document.getElementById('ctl00_middleContent_TextBoxPriv'); 
        if (obj != null && obj.value != '')      
         msg = validateLoginUserLogin(obj.value); 

        if (msg == '') 
        {       
         if(document.getElementById('ctl00_middleContent_CheckLicense').checked) 
         { 
          if(log.login('recognize')) 
          { 
           __doPostBack('ctl00$middleContent$lnkButton1',''); 
          } 
         } 
         else 
          LabelError.innerHTML = 'עליך להסכים לתנאי השימוש על מנת להמשיך לגלוש באתר'; 
        } 
        else 
         LabelError.innerHTML = msg; 
       } 
       else 
        LabelError.innerHTML = msg; 
      } 
     } 
     else 
      LabelError.innerHTML = msg; 
    }   
    $(function(){ 
     $('#ctl00_middleContent_TextBoxName,#ctl00_middleContent_TextBoxPass,#ctl00_middleContent_CellName').keypress(function(e){ 
      if(e.keyCode==13)     
       Continue_Click(); 
     }); 

사람이 내가 이것을 실행할 수있는 방법을 알고 있나요을 컬을 사용할 때의 기능?

감사

+0

올바른 페이지로 안내하기 전에 쿠키 또는 무언가를 확인하려고하지 않습니까? –

+0

나는 말풍선을 사용하여 쿠키를 가져 왔습니다. 하지만 내 직감은 JS가 양식을 통해 전송되는 데이터의 유효성을 검사하는 데 사용되고 있다고 알려줍니다. – embedded

답변

0

컬 서버에 HTTP 요청을하고 (선택적으로) 응답을 기록하는 단지 도구입니다. 생각하고있는 요청을하면 서버는 curl의 요청에 응답하여 몇 KB의 텍스트를 보냅니다.

이 경우 텍스트는 일부 자바 스크립트가 임베드 (또는 참조) 된 HTML입니다. 그러나 컬은 HTML을 구문 분석하는 방법을 알지 못합니다. 단지 데이터 일 뿐이 기 때문입니다. 전송 도구입니다. 그것은 데이터 작업을 받았습니다.

그래서 나는 컬을 가지고 싶으면 막 다른 골목을 치는 것 같아요.은 자바 스크립트를 실행합니다. HTML을 파싱하고 실제로 실행해야하는 JS 명령을 처리하는 HTML 엔진은 물론 JS 엔진이 필요합니다. Rhino 또는 Spidermonkey은 전자는 할 수 있지만 JS 파일은 없지만 HTML 파일은 너무 잘 작동하지 않으므로 근본적으로, 이것이 일반적으로, 포괄적으로 그리고 자율적으로 작동하기를 원한다면 브라우저와 똑같이 동작하는 도구가 필요합니다. 브라우저 정의는 이고 브라우저는입니다.

대부분의 경우 단일 사이트를보고있는 경우 브라우저가 요청한 요청을 스니핑하여 전송해야하는 요청을 해결할 수 있습니다. 일반적으로 최악의 시나리오에서는 반환 된 텍스트에 정규식을 사용하여 예를 들어 추출해야 할 수도 있습니다. sessionID; 주어진 사이트에서 이것은 그렇게 나쁘지 않습니다. 이 정도의 취성을 갖기 위해 준비하지 못했다면 컬은 당신이하고있는 것에 대한 적절한 도구가 아닙니다.

관련 문제