2012-11-14 127 views
1

嘿人我有一個劇本,我可以登錄到Facebook上分享這個工作得很好,但現在我嘗試在其他網站登錄我得到的500錯誤在互聯網上找到。(500)內部服務器錯誤在網站登錄腳本

Dim cookieJar As New Net.CookieContainer() 
    Dim request As Net.HttpWebRequest 
    Dim response As Net.HttpWebResponse 
    Dim strURL As String = "http://xtract.basdistributie.nl:4040/Account/LogOn" 

     Try 
     request = Net.HttpWebRequest.Create(strURL) 
     request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" 
     request.Method = "GET" 
     request.CookieContainer = cookieJar 
     response = request.GetResponse() 

     For Each tempCookie As Net.Cookie In response.Cookies 
      cookieJar.Add(tempCookie) 
     Next 

     'Send the post data now 
     request = Net.HttpWebRequest.Create(strURL) 
     request.UserAgent = "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)" 
     request.Method = "POST" 
     request.AllowAutoRedirect = True 
     request.CookieContainer = cookieJar 

     Dim writer As StreamWriter = New StreamWriter(request.GetRequestStream()) 
     writer.Write("username=???????&password=????????") 
     writer.Close() 

     response = request.GetResponse() 

     'Get the data from the page 
     Dim stream As StreamReader = New StreamReader(response.GetResponseStream()) 
     Dim data As String = stream.ReadToEnd() 
     response.Close() 

     If data.Contains("BAS Distribution Xtract") = True Then 
      MsgBox("ingelogd") 
     End If 
     MsgBox(data) 
    Catch e As Exception 
     If TypeOf e Is WebException AndAlso DirectCast(e, WebException).Status = WebExceptionStatus.ProtocolError Then 
      Dim errResp As WebResponse = DirectCast(e, WebException).Response 
      ' read the error response 
      Using respStream As Stream = errResp.GetResponseStream() 
       MsgBox(e.ToString) 
      End Using 
     End If 
    End Try 

錯誤信息上找到應對地方= request.GetResponse()我也有菲德勒試圖獲得更好的錯誤消息,但從來沒有與this.I工作也瞭解在互聯網上的東西,錯誤是因爲該網站是建立在asp而不是.net這是真的嗎?

所有幫助表示讚賞

回答

1

的原因,Facebook的登錄機制不與本網站的其他工作,是因爲他們可能不具有相同的登錄表單參數。

這裏是你應該如何進行(雖然確切的答案在這一點上是不可能的)

  1. 使用瀏覽器瀏覽到你想登錄到
  2. 網站檢查登錄表單的HTML獲取實際的參數名稱。例如,這個網站可能會使用'uname'而不是'username'和類似的東西。
  3. 編輯你的代碼張貼形式

對每個輸入的值。如果這不起作用:

  1. 安裝Wireshark的或類似的東西,所以你可以查看HTTP流量
  2. 導航使用瀏覽器訪問網站
  3. 用您的瀏覽器登錄並使用wireshark查看登錄請求。要特別注意的POST變量名和值和報頭信息
  4. 更新腳本適當

如果您需要4步幫助,您可以請編輯您的帖子,包括從步驟3.信息

WIRESHARK

下面是關於如何在這裏使用wireshark的簡要說明。我不會詳細討論過濾或類似的東西。你可以用你的眼睛來篩選:P

當你打開你的Wireshark顯示接口的列表。第1步是選擇一個接口...

  • 如果你通過WiFi連接選擇一個WLAN接口。希望只有一個。如果通過網線連接,然後選擇eth0,則可以依靠試驗和錯誤來獲得正確的一個,否則可以使用
  • 。希望只有一個等等等等

如果沒有顯示接口列表應該有一個圖標在窗口的左上角看起來像打印機。點擊它可以讓你選擇界面(點擊開始開始捕捉)。

使用您的瀏覽器登錄您的網站並立即通過點擊帶有紅色x的icno來停止捕獲。

現在你需要找到正確的數據包...

你有興趣的協議是HTTP。您正在訪問的域的名稱可能會顯示在信息列中。現在我只是假設它確實如此。如果它不只是這樣評論。另外如果你看到SSL,那麼這可能是沒用的。我對ssl還不是非常瞭解...

好的,現在您可以識別發送到Web應用程序的數據包了。找到一個說POST的內容,看看裏面有什麼。如果這是你的登錄資料,那麼這是一場勝利。

記下看起來相關的所有信息。

現在,如果您重複使用您的應用程序嘗試登錄並找到該登錄數據包的整個過程,那麼您可以發揮點差異。

+0

該網頁的參數是好的,我現在已經加倍檢查。我現在要去嘗試其他4個步驟的Tanx快速反應。 – AntoonVs

+0

好吧,我已經第一次嘗試用WireShark來檢索你問的數據,但這對我沒有用。所以我發現一些數據與Fidler2希望這是你需要幫助 – AntoonVs

+0

我試着給出正確的信息,但我不知道如何能有人請求幫助 – AntoonVs