2010-11-22 78 views
0

我正在嘗試登錄到某個網站。 我之前做過一些其他網站,但這個網站比較複雜。 我使用LIVE HTTP頭來捕獲發佈請求。 我注意到帖子請求是正確完成的,但由於某種原因,我沒有被轉移到正確的網址。 我翻遍了頁面源代碼,我認爲這個表單正在使用JS進行傳輸。需要捲曲文章和javascript幫助

這是附加在後參數的__VIEWSTATE變量之後:

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

,這是JavaScript函數,驗證了該信息:

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

您確定它沒有嘗試檢查cookie或其他內容,然後將您導向到正確的頁面? – 2010-11-22 09:38:16

+0

我使用curl來獲取cookie。 但我的直覺告訴我,JS正被用於驗證通過表單發送的數據。 – embedded 2010-11-22 09:39:07

回答

0

捲曲只是使HTTP請求到服務器,和(可選)記錄響應工具。當你提出你正在考慮的請求時,服務器會根據curl的請求發送幾KB的文本。

在這種情況下,文本是HTML嵌入(或引用)一些Javascript。但curl不知道如何解析HTML,因爲它只是一個數據工具。它收到了數據 - 完成了工作。

所以我覺得如果你想捲曲自動執行Javascript,你會打到一個死衚衕。你需要一個JS引擎來做到這一點,還有一個HTML引擎來解析HTML並找出應該實際運行的JS命令。 RhinoSpidermonkey可以做前者,但由於您沒有JS文件,但是有一個HTML文件,所以不會工作得太好。從根本上說,如果您希望這種方式能夠全面且自主地工作,您需要一款與瀏覽器行爲相同的工具 - 根據定義,瀏覽器。

在大多數情況下,如果您正在查看單個站點,則可以通過瀏覽瀏覽器發出的請求來計算curl需要發送的請求。通常,在最壞的情況下,您可能需要在返回的文本上使用正則表達式來提取例如sessionID;對於一個給定的網站,這並不是很糟糕。如果你不準備有這種脆弱程度,那麼捲曲就不是你正在做的事情的合適工具。