Csharp logga in till swedbank mobil, problem

Permalänk
Medlem

Csharp logga in till swedbank mobil, problem

Tjenare!

Har lite strul. Försöker göra ett program som kan logga in till swedbank mobil för att sedan ladda in info om vilka transaktioner som skett sedan senaste uppdatering för att sedan föra statistik över sin ekonomi. Problemet är att jag inte kan passera login biten.
Använder mig att http post och http get.

1. Jag använder get på : "https://mobilbank.swedbank.se/banking/swedbank/login.html" för att hämta den token som finns.

2. Jag använder post på : "https://mobilbank.swedbank.se/banking/swedbank/loginNext.html" där jag skickar med parametrarna "xyz=201106111234&auth-method=code&_csrf_token=" + token har kollat så att token är korrekt extraherad från sidan och det är den. Datumet ovan har ersatt mitt personnummer för att jag inte vill lämna ut det här.

Felmeddelandet jag får är: "Omsändning av formulär är ej tillåtet av säkerhetsskäl." Vad är det jag gör fel?

Tacksam för all hjälp!

//2infinity

Permalänk
Medlem

Här är metoderna för http post och http get:

string HttpPost(string uri, string parameters)
{
// parameters: name1=value1&name2=value2
WebRequest webRequest = WebRequest.Create(uri);
//string ProxyString =
// System.Configuration.ConfigurationManager.AppSettings
// [GetConfigKey("proxy")];
//webRequest.Proxy = new WebProxy (ProxyString, true);
//Commenting out above required change to App.Config
webRequest.ContentType = "application/x-www-form-urlencoded";
webRequest.Method = "POST";
byte[] bytes = Encoding.ASCII.GetBytes(parameters);
Stream os = null;
try
{ // send the Post
webRequest.ContentLength = bytes.Length; //Count bytes to send
os = webRequest.GetRequestStream();
os.Write(bytes, 0, bytes.Length); //Send it
}
catch (WebException ex)
{
MessageBox.Show(ex.Message, "HttpPost: Request error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
if (os != null)
{
os.Close();
}
}

try
{ // get the response
WebResponse webResponse = webRequest.GetResponse();
if (webResponse == null)
{ return null; }
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
return sr.ReadToEnd().Trim();
}
catch (WebException ex)
{
MessageBox.Show(ex.Message, "HttpPost: Response error",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}
return null;
}

private string HttpGet(string uri)
{
// used to build entire input
StringBuilder sb = new StringBuilder();

// used on each read operation
byte[] buf = new byte[8192];

// prepare the web page we will be asking for
HttpWebRequest request = (HttpWebRequest)
WebRequest.Create(uri);

// execute the request
HttpWebResponse response = (HttpWebResponse)
request.GetResponse();

// we will read data via the response stream
Stream resStream = response.GetResponseStream();

string tempString = null;
int count = 0;

do
{
// fill the buffer with data
count = resStream.Read(buf, 0, buf.Length);

// make sure we read some data
if (count != 0)
{
// translate from bytes to ASCII text
tempString = Encoding.ASCII.GetString(buf, 0, count);

// continue building the string
sb.Append(tempString);
}
}
while (count > 0); // any more data to read?

// print out page source
return sb.ToString();
}

Permalänk
Medlem

Testa nu, ändrade HttpWebRequest webRequest raden och la till UserAgent och en Referer. Vet inte vad SwedBank kontrollerar, men UserAgent är rätt vanligt. De kollar kanske kakorna i webbläsaren också.

string HttpPost(string uri, string parameters) { // parameters: name1=value1&name2=value2 HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(uri); //string ProxyString = // System.Configuration.ConfigurationManager.AppSettings // [GetConfigKey("proxy")]; //webRequest.Proxy = new WebProxy (ProxyString, true); //Commenting out above required change to App.Config webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)"; webRequest.Referer = "https://mobilbank.swedbank.se/banking/swedbank/login.html"; webRequest.Method = "POST"; byte[] bytes = Encoding.ASCII.GetBytes(parameters); Stream os = null; try { // send the Post webRequest.ContentLength = bytes.Length; //Count bytes to send os = webRequest.GetRequestStream(); os.Write(bytes, 0, bytes.Length); //Send it } catch (WebException ex) { MessageBox.Show(ex.Message, "HttpPost: Request error", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { if (os != null) { os.Close(); } } try { // get the response WebResponse webResponse = webRequest.GetResponse(); if (webResponse == null) { return null; } StreamReader sr = new StreamReader(webResponse.GetResponseStream()); return sr.ReadToEnd().Trim(); } catch (WebException ex) { MessageBox.Show(ex.Message, "HttpPost: Response error", MessageBoxButtons.OK, MessageBoxIcon.Error); } return null; }

Permalänk
Medlem

Tjenare! Tack för svaret men det ser ut som att UserAgent och Referer inte finns i klassen WebRequest. Heter de kanske något annat?

Edit: Ah funkar nu! Dock så får jag fortfarande samma felmeddelande

Permalänk
Medlem
Permalänk

Tjenare,

Jag sitter just nu och har sprungit in i samma vagg som du hade nar du jobbade pa din app, jag ville bara kolla om du hittade losningen pa detta och isf vad gjorde du?

Tack pa forhand,
Daniel Ekeroth