2012-11-14 50 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