2017-07-20 263 views
1

登錄我不明白的.SetRequestHeaderVBA如何與MSXML2.XMLHTTP

意義下面是登錄某些網站

Function webLogin() 

    Dim Cookie As String 

    Set oXHTTP = CreateObject("MSXML2.XMLHTTP") 

    oXHTTP.Open "POST", "http://someURL/login", False, "admin", "adminpw" 
    oXHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
    oXHTTP.Send 



    Cookie = oXHTTP.GetResponseHeader("Set-Cookie") 


    oXHTTP.Open "POST", "http://someURL/ord?station:%7Cslot:/", False 
    oXHTTP.SetRequestHeader "Cookie", Cookie 
    oXHTTP.Send 


    Debug.Print oXHTTP.ResponseText 

End Function 

此代碼工作代碼,但不能登錄。

我認爲這是因爲錯誤的使用SetRequestHeader與該網站有一個提交按鈕但是這個代碼不點擊按鈕。

+0

如果不知道實際的URL以及它們如何處理登錄,幾乎不可能說出問題所在。 –

+0

謝謝你的答覆url是192.168.0.200的IP,登錄代碼就是這樣... –

+0

你是否試圖登錄到IOT設備? – jsotola

回答

0

我可以告訴你,通常的方式登錄會與任何網站,並支持webrequests任何對象工作。

首先開始一個GET請求到登錄站點並獲取所有必要的數據。通過GET請求,您通常至少會獲得一個會話cookie。此外,您將獲得需要爲登錄帖子提交的所有數據。因此,您的第一步應該是在開發者模式下使用google chrom/firefox打開登錄頁面,並檢查整個登錄過程。

這並不是罕見的網站上使用的東西像CRSF令牌或其他領域中的網頁以某種獨特的ID。有時可以在標題中找到它,有時它是一個隱藏的字段,需要在POST請求中發送才能登錄。

所以,如果你發現,哪些cookies和什麼POST數據是必需的。您的下一步將發送實際的POST請求,包括來自第一個GET請求的cookie以及填寫所有必需的POST數據。這至少是用戶名和密碼(確切的名字可以在瀏覽器的開發者模式中找到)。

從該POST請求中,您將最有可能獲得另一個cookie並重定向到您登錄的起始頁面。 因此,您需要將所有這些cookie用於所有對登錄後網站的更多GET請求。

相關問題