Nabend mitteinand,
ich möchte gerne ein paar Werte von ask.fm/account/stream lesen, allerdings scheitert es schon beim Login.
Vorgehen:
- Seite anfordern und authentication_token auslesen
- Logindaten an den Server senden
- ...
Das Problem, denke ich, liegt an den unvollständigen Cookies beim Senden der Logindaten. z.B. _ask.fm_session Cookie?
Danke (:
Hier Code dazu(was sind die richtigen [vb.net]-code Tags?):
ich möchte gerne ein paar Werte von ask.fm/account/stream lesen, allerdings scheitert es schon beim Login.
Vorgehen:
- Seite anfordern und authentication_token auslesen
- Logindaten an den Server senden
- ...
Das Problem, denke ich, liegt an den unvollständigen Cookies beim Senden der Logindaten. z.B. _ask.fm_session Cookie?
Danke (:
Hier Code dazu(was sind die richtigen [vb.net]-code Tags?):
PHP Code:
Public Sub login(user As String, pw As String)
//Get response for authentication token
Dim tempcookie As New CookieContainer
Dim request As WebRequest = _
WebRequest.Create("http://ask.fm/")
request.Credentials = CredentialCache.DefaultCredentials
Dim response As HttpWebResponse = DirectCast(request.GetResponse(), HttpWebResponse)
//expect _ask.fm_session cookie here, but there is non cookie returned at all
tempcookie.Add(response.Cookies)
Dim dataStream As Stream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
Dim starttag As String = "authenticity_token"" type=""hidden"" value="""
Dim endtag As String = "="" />"
Dim t_token As String
Dim user_list As New List(Of String)
Dim postdata As String
//Clean up the streams and the response.
reader.Close()
response.Close()
//Get token stream data
t_token = responseFromServer.Substring(responseFromServer.IndexOf(starttag) + starttag.Length)
auth_token = t_token.Substring(0, t_token.IndexOf(endtag))
//prepare cont for login
Dim encoding As New UTF8Encoding
postdata = "authenticity_token=" & auth_token & _
"%3D&login=" & user & _
"&password=" & pw & _
"&follow=&like=&back=&authenticity_token=" & auth_token & _
"%3D"
Dim bytes() = encoding.GetBytes(postdata)
Dim ask_request As HttpWebRequest = DirectCast(WebRequest.Create("http://ask.fm/session"), HttpWebRequest)
ask_request.Method = "POST"
ask_request.KeepAlive = True
ask_request.CookieContainer = tempcookie
//Set request values
ask_request.Accept = "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01"
ask_request.ContentLength = bytes.Length
ask_request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"
ask_request.Referer = "http://ask.fm/"
ask_request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"
ask_request.Host = "ask.fm"
ask_request.Headers.Add("Accept-Language", "de,en-US;q=0.7,en;q=0.3")
ask_request.Headers.Add("X-Requested-With", "XMLHttpRequest")
//ask_request.Headers.Add("Cookie", "language_id=14; __qca=P0-375437971-1420825693756; inbox_notice=0; rbox_type=2; rbox_toggle=1; mobile_view=false; _ask.fm_session=BAh7CToOcmV0dXJuX3RvIhQvYWNjb3VudC9zdHJlYW06D3Nlc3Npb25faWQiJTcwNDMwN2dWM3ZGIxNfNTM0ZTYd5NzJmNfdE1OhBfY3NyZl90b2tlbiIxL1FdsdfdONG01sdTXFxdFNYYytdsxvdHZCVG5Cdk5ZZGMrbUNYM2ZSND06EG9sZF9nZXRfdXJsIgYv--15031f3050681ed6c4533545a56dce9a94fa092e")
Dim ask_request_stream As Stream = ask_request.GetRequestStream()
ask_request_stream.Write(bytes, 0, bytes.Length)
ask_request_stream.Close()
Dim ask_response As HttpWebResponse = DirectCast(ask_request.GetResponse(), HttpWebResponse)
//The cookies given are different to those usually given when login was successful
tempcookie.Add(ask_response.Cookies)
logincookie = tempcookie
Dim ask_response_reader As New StreamReader(ask_response.GetResponseStream())
Dim ask_response_string As String = ask_response_reader.ReadToEnd()
ask_response_reader.Close()
ask_request_stream.Close()
ask_response.Close()
End Sub