Hallo Leute,
ich versuche gerade eine kleine Facebook API zu schreiben, habe allerdings ein Problem mit dem Einloggen:
Und zwar rufe ich mit dem HttpWebRequest die normale Facebook.com Seite auf. Auf der Seite erhalte ich 4 Cookies, welche ich im nächsten Schritt beim Post der Logindaten + der hidden-inputs, wieder an eine HTTPS-Facebook Seite schicke...
Ich erhalte allerdings immer nur die "Ihr Browser hat Cookies deaktiviert" Seite.
Hat jemand eine Lösung für mich?
Private Sub TestSub()
Dim myWebExchange As New WebExchange
Dim charset_test As String = _
"%E2%82%AC%2C%C2%B4%2C%E2%82%AC%2C%C2%B4%2C%E6%B0%B4%2C%D0%94%2C%D0%84"
Dim locale As String = "de_DE"
myWebExchange.GetCookie("http://www.facebook.com/", "")
Dim postData As String = "email=" & email & "&pass=" & pass & _
"&charset_test=" & charset_test & "&locale=" & locale & _
"&lsd=" & myWebExchange.lsd
myWebExchange.GetCookie( _
"https://login.facebook.com/login.php?login_attempt=1", _
postData, "http://www.facebook.com/")
End Sub
Private Class WebExchange
Public mycookie As String
Public lsd As String
Public Function GetCookie(ByVal URL As String, ByVal PostData As String, _
Optional ByVal referer As String = "") As String
Dim request As HttpWebRequest
Dim response As HttpWebResponse
Dim str, str2 As IO.Stream
Dim data As Byte() = System.Text.Encoding.UTF8.GetBytes(PostData)
request = Net.WebRequest.Create(URL)
request.CookieContainer = New CookieContainer()
request.Method = "POST"
request.Accept = _
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
request.Headers.Add(Net.HttpRequestHeader.AcceptLanguage, "de")
request.Headers.Set(HttpRequestHeader.Cookie, mycookie)
request.Headers.Add(Net.HttpRequestHeader.AcceptEncoding, "gzip," & _
"deflate")
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT" & _
"6.0; WOW64; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET" & _
"CLR " & "3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30618) "
If Not referer = "" Then request.Referer = referer
request.ContentType = "application/x-www-form-urlencoded"
request.ContentLength = data.Length
str2 = request.GetRequestStream()
str2.Write(data, 0, data.Length)
str2.Close()
response = request.GetResponse
str = response.GetResponseStream()
mycookie = ""
If response.Cookies IsNot Nothing AndAlso response.Cookies.Count _
<> 0 Then
For Each cookie As Cookie In response.Cookies
If mycookie = "" Then
mycookie = cookie.ToString
Else
mycookie = mycookie & "; " & cookie.ToString
End If
If cookie.ToString.StartsWith("lsd") Then
lsd = cookie.ToString.Split("=")(1)
End If
Next
Else
mycookie = ""
Return ""
End If
If (response.ContentEncoding.ToLower().Contains("gzip")) Then
str = New IO.Compression.GZipStream(str, _
IO.Compression.CompressionMode.Decompress)
ElseIf (response.ContentEncoding.ToLower().Contains("deflate")) Then
str = New IO.Compression.DeflateStream(str, _
IO.Compression.CompressionMode.Decompress)
End If
Dim Buffer As String = New IO.StreamReader(str, _
System.Text.Encoding.UTF8).ReadToEnd
Return mycookie
End Function
End Class
Beitrag wurde zuletzt am 18.08.10 um 20:52:21 editiert. |