elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Iniciar sesion en web con C#
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Iniciar sesion en web con C#  (Leído 9,805 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Iniciar sesion en web con C#
« Respuesta #10 en: 29 Noviembre 2014, 19:37 pm »

SI FUNCIONAA!!! :)

Mil gracias aun no me lo creo, así es introduce login correcto y funcionó :)), me estudiare ese code con detalle, MIL gracias, ahora probaré a crear un tema con ese inicio de sesión o algo, pero que raro no? no necesito cookies? xD (mejor!), ahora para respondercrear un tema o un mensaje supongo que deberé hacer HttpWebRequest y cargar las varibles como al inicio de sesión, no sé iré probando.

Mil gracias por dedicarle el tiempo maestro ;-) ;-) ;-)

Bueno socio tengo una duda, estoy intentando crear un mensaje con esa sesión y claro tendría que hacerlo con el httprequest anterior que ya inicio sesion correctamente, pero la direccion es otra en el http request pues ya no es la url de /login ahora es la te un /temacualquieraquesea, debo crear otra httprequest, como podría hacerlo aprovechando el inicio de sesion de la anterior, he probado lo siguiente pero no escribe nada:

Código
  1. string postData = "email=user&password=pass";
  2.            byte[] byteData = ASCIIEncoding.ASCII.GetBytes(postData);
  3.            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://pagina.com/user/login");
  4.            req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  5.            //req.Connection = "keep-alive";
  6.            req.ContentType = "application/x-www-form-urlencoded";
  7.            req.ContentLength = byteData.Length;
  8.            req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
  9.            req.Host = "pagina.com";
  10.            req.Method = "POST";
  11.            req.Proxy = null;
  12.            using (Stream reqStream = req.GetRequestStream())
  13.                reqStream.Write(byteData, 0, byteData.Length);
  14.            //Cojemos respuesta.
  15.            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
  16.            using (Stream responseStream = response.GetResponseStream())
  17.            {
  18.                using (StreamReader sr = new StreamReader(responseStream))
  19.                {
  20.                    string responseData = sr.ReadToEnd();
  21.                    if (!responseData.Contains("Iniciar se"))
  22.                        MessageBox.Show("Login successful!");
  23.                    else
  24.                        MessageBox.Show("Login failed!");
  25.                }
  26.            }
  27.            string directorio = Directory.GetCurrentDirectory();
  28.            string linea, mensaje;
  29.            StreamReader reader = new StreamReader(directorio + "\\Temas.txt");
  30.            StreamReader readel = new StreamReader(directorio + "\\MisRespuestas.txt");
  31.            detenerRespuestas = false;
  32.            do
  33.            {
  34.                linea = reader.ReadLine();
  35.                mensaje = readel.ReadLine();
  36.                if(linea == "" || mensaje == "" || detenerRespuestas == true)
  37.                {
  38.                    break;
  39.                }
  40.                string postData2 = "qaa_content=" + mensaje + "&action=reply";
  41.                byte[] byteData2 = ASCIIEncoding.ASCII.GetBytes(postData2);
  42.                HttpWebRequest req2 = (HttpWebRequest)HttpWebRequest.Create(linea);
  43.                req2.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  44.                req2.ContentType = "application/x-www-form-urlencoded";
  45.                req2.ContentLength = byteData2.Length;
  46.                req2.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
  47.                req2.Host = "pagina.com";
  48.                req2.Method = "POST";
  49.                req2.Proxy = null;
  50.                req2.CookieContainer = req.CookieContainer;
  51.                req2.Credentials = req.Credentials;
  52.  
  53.                using (Stream reqStream = req2.GetRequestStream())
  54.                    reqStream.Write(byteData2, 0, byteData2.Length);
  55.                MessageBox.Show(linea + mensaje);
  56.            } while (linea != "" || detenerRespuestas == false);

Tambien probé a cambiar el requestUri pero era de solo lectura asi que parece que hay que crear otro httprequest nuevo, supongo necesitara las cookies del otro para poder mandar la respuesta o el mensaje en el tema, pero ya se las puse y no fue mm..

Saludos socio.


« Última modificación: 30 Noviembre 2014, 00:22 am por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.439


S3C M4NI4C


Ver Perfil
Re: Iniciar sesion en web con C#
« Respuesta #11 en: 30 Noviembre 2014, 22:36 pm »

Bueno socio tengo una duda, estoy intentando crear un mensaje con esa sesión y claro tendría que hacerlo con el httprequest anterior que ya inicio sesion correctamente, pero la direccion es otra en el http request pues ya no es la url de /login ahora es la te un /temacualquieraquesea, debo crear otra httprequest, como podría hacerlo aprovechando el inicio de sesion de la anterior, he probado lo siguiente pero no escribe nada:

Para postear tienes que estar logeado, por lo que tendrás que coger la cookie de sesión de la respuesta no de la request. Cuando tengas la cookie de la response, abres una nueva request al foro donde vas a postear y le pones la cookie de la respuesta anterior. Supongo que con eso debería de valer ;)

En resumen: ten en cuenta las cookies de la respuesta del login.

Saludos.


En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Iniciar sesion en web con C#
« Respuesta #12 en: 1 Diciembre 2014, 17:31 pm »

Gracias socio, vaya parece que me da error al iniciar sesión ahora, el código que antes me funcionaba y ponía login sucessfull, ahora no funciona y al usar GetResponse() me da error en server remoto 407, el mismo código que antes me funcionaba. Así que no puedo probar nada, sin embargo con firefox puedo iniciar sesión en la cuenta sin problemas.

Así que no he podido probar lo de las cookies, de todas formas creo que lo probé a hacer con las de respuesta anteriormente y no dió resultado pero ahora no te lo puedo confirmar.

Saludos.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
.::IT::.

Desconectado Desconectado

Mensajes: 166



Ver Perfil
Re: Iniciar sesion en web con C#
« Respuesta #13 en: 2 Diciembre 2014, 07:04 am »

debes usar cookies para almacenar las que te devuelve el servidor
CookieContainer myCookie;

luego a tu HttpWebRequest se la asignas:

req.CookieContainer = myCookie;

Y esta Cookie debe ser unica en todo el programa y siempre se la asignas a cualquier HttpWebRequest que vas usar para Hacer peticiones al servidor.


« Última modificación: 2 Diciembre 2014, 07:08 am por .::IT::. » En línea

Simplemente .::IT::.
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Iniciar sesion en web con C#
« Respuesta #14 en: 2 Diciembre 2014, 15:22 pm »

No se trata de eso, no puedo iniciar sesión si que puedo descargar foros y temas pero iniciar sesión me devuelve un error que no depende del programa y que mandan el servidor ERROR 407 EXPECTATION FAILED. Antes no me ocurría este error y podía iniciar sesión perfectamente, no es que hayan bloqueado mi ip ni mi cuenta porque con mozilla puedo entrar en la cuenta. ¿Qué puede ser el causante de este error que antes no aparecía y como solucionarlo?. Gracias.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.439


S3C M4NI4C


Ver Perfil
Re: Iniciar sesion en web con C#
« Respuesta #15 en: 2 Diciembre 2014, 16:36 pm »

Aupa!

Cuando tenga un rato libre le echo un vistazo, es raro lo que comentas ya que yo te dejé un código funcional que tu mismo aseguraste que funcionaba. Lo adaptaré para que tenga en cuenta las cooks.

P.D = Editaré este mismo post cuando tenga tiempo así que estate al loro!
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Iniciar sesion en web con C#
« Respuesta #16 en: 2 Diciembre 2014, 17:50 pm »

Ok gracias, si, el mismo código que antes me funcionaba ahora no lo hace me sale error 407, antes me ponia login succesful xD, muy raro la verdad jaja cuando quieras socio no hay prisa yo siempre ando turulando por aquí gracias.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.439


S3C M4NI4C


Ver Perfil
Re: Iniciar sesion en web con C#
« Respuesta #17 en: 3 Diciembre 2014, 17:32 pm »

Que raro, he abierto otra cuenta basura en el foro ese y me logea perfectamente.

Si añades este code al final del método GetResponse que postee podrás ver la cookie de sesión la cual debes de mantener en todas las request vinculadas a tu login, sino el servidor no podrá reconocerte como usuario.

Código
  1. foreach (Cookie cook in response.Cookies)
  2.                Console.WriteLine("Name:{0} Value:{1}",cook.Name, cook.Value);

Saludos.
En línea

Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Iniciar sesion en web con C#
« Respuesta #18 en: 3 Diciembre 2014, 17:46 pm »

Vaya lo que pasa es que eso no puedo hacerlo porque el programa deja de responder:

Código
  1. private static void SendRequest()
  2.           {
  3.               string postData = "email=loquesea@hotmail.com&password=blabla";
  4.               byte[] byteData = ASCIIEncoding.ASCII.GetBytes(postData);
  5.               HttpWebRequest req = (HttpWebRequest) HttpWebRequest.Create("http://pagina.com/user/login");
  6.               req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  7.               //req.Connection = "keep-alive";
  8.               req.ContentType = "application/x-www-form-urlencoded";
  9.               req.ContentLength = byteData.Length;
  10.               req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
  11.               req.Host = "pagina.com";
  12.               req.Method = "POST";
  13.               req.Proxy = null;
  14.               using (Stream reqStream = req.GetRequestStream())
  15.                   reqStream.Write(byteData, 0, byteData.Length);
  16.               GetResponse(req);
  17.           }
  18.  
  19.           private static void GetResponse(HttpWebRequest req)
  20.           {
  21.               HttpWebResponse response = (HttpWebResponse) req.GetResponse();
  22.               using (Stream responseStream = response.GetResponseStream())
  23.               {
  24.                   using (StreamReader sr = new StreamReader(responseStream))
  25.                   {
  26.                       string responseData = sr.ReadToEnd();
  27.                       if (!responseData.Contains("Iniciar se"))
  28.                           Console.WriteLine("Login successful!");
  29.                       else
  30.                           Console.WriteLine("Login failed!");
  31.                   }
  32.               }
  33.               foreach (Cookie cook in response.Cookies)
  34.                   Console.WriteLine("Name:{0} Value:{1}", cook.Name, cook.Value);
  35.           }

Y no puede mostrar nada he probado a poner login falso en el POST y falla igual, no hay manera, y si no hago POST enviando datos no falla y me pone login failed, pero cuando hago un POST con el email y pass falla PD WTF, creo que es algo independiente de la cuenta, WTF.

Da error en la línea 14, no entiendo, lo he probado en otro programa también, incluso con otra IP, buscaré acerca de ese error de nuevo haber si hay alguna solución :/.

Gracias.

Edito: Error HTTP 407 puede ser que el robots.txt sea capaz de detectarlo de alguna forma, mmm probé a cambiar el agente de navegador fallaba igual, mm pero es raro a ti el mismo código te funciona. ¿con qué criterios lo bloquea entonces?, lo pensaré, saludos.

He seguido leyendo y dice que este error que devuelve el servidor suele ser porque se requiere autentificación de proxy.

Aaamigo mío creo que ya lo voy pillando lo que ocurre es que me debe de redirigir a otra página porque ha detectado que soy un robot y allí debo autentificarme para demostrar que no lo soy, y al no autentificarme me sale ese error, leyendo de aquí.

La autentificación que pide, es solo conocida para el servidor. Parece que este ordenador le tiene calado, lo que no entiendo es como me ha podido bloquear a mí y a ti no, que tiene tu ordenador diferente del mío para ellos que hace que mi ordenador sea bloqueado xP, interesante.

Contenido de robots.txt

Citar
User-agent: *
Disallow: /al/

Hehe desconozcía como funcionaba lo de robots.txt, he estado leyendo, si he entendido bien no debería de influir ahí lo que hace sería  denegar la entrada a ese directorio a cualquier usuario de navegación, usado principalmente para ocultar esos directorios de los searchs engines, aquí lo leí, saludos.

Vaya vaya vaya, creo que estopuede ser el causante del problema, el problema no es que la página detecto mi bot, es un fallo de visual studio, pues estaba haciendo otro programa para iniciar sesión y sorpresa ocurre lo mismo, entonces pensé que MVS13 era el culpable, intentaré solucionarlo.

OMG he probado mil cosas como esta, desesperante omg, he leido me he instalado postsharp no va a arreglar nada pero puede ser el sustitutivo, al final creo que aqui está la solucion pero ¿a que proxy se refiere?, de todas formas en la aplicacion en el httprequest usimos req.proxy=null; horrible PD

Vale, me he mudado y me funciona la aplicación con el inicio de sesión WTF, quizás era un problema de router o lo que sea. El caso que hace login sucessful tengo esto:

Código
  1. string postData = "email=dfdf@hotmail.com&password=dfd";
  2.            byte[] byteData = ASCIIEncoding.ASCII.GetBytes(postData);
  3.            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://pagina.com/user/login");
  4.            req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  5.            //req.Connection = "keep-alive";
  6.            req.ContentType = "application/x-www-form-urlencoded";
  7.            req.ContentLength = byteData.Length;
  8.            req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
  9.            req.Host = "pagina.com";
  10.            req.Method = "POST";
  11.            req.Proxy = null;
  12.            using (Stream reqStream = req.GetRequestStream())
  13.                reqStream.Write(byteData, 0, byteData.Length);
  14.            //Cojemos respuesta.
  15.            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
  16.            using (Stream responseStream = response.GetResponseStream())
  17.            {
  18.                using (StreamReader sr = new StreamReader(responseStream))
  19.                {
  20.                    string responseData = sr.ReadToEnd();
  21.                    if (!responseData.Contains("Iniciar se"))
  22.                        MessageBox.Show("Login successful!");
  23.                    else
  24.                        MessageBox.Show("Login failed!");
  25.                }
  26.            }
  27.            string directorio = Directory.GetCurrentDirectory();
  28.            string linea, mensaje;
  29.            StreamReader reader = new StreamReader(directorio + "\\Temas.txt");
  30.            StreamReader readel = new StreamReader(directorio + "\\MisRespuestas.txt");
  31.            detenerRespuestas = false;
  32.            do
  33.            {
  34.                linea = reader.ReadLine();
  35.                mensaje = readel.ReadLine();
  36.                MessageBox.Show("###1111 " + linea + mensaje);
  37.                if (linea == "" || mensaje == "" || detenerRespuestas == true)
  38.                {
  39.                    break;
  40.                }
  41.                string postData2 = "qaa_content=" + mensaje + "&action=reply";
  42.                byte[] byteData2 = ASCIIEncoding.ASCII.GetBytes(postData2);
  43.                HttpWebRequest req2 = (HttpWebRequest)HttpWebRequest.Create(linea + "?Add=1");
  44.                req2.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  45.                req2.ContentType = "application/x-www-form-urlencoded";
  46.                req2.ContentLength = byteData2.Length;
  47.                req2.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
  48.                req2.Host = "pagina.com";
  49.                req2.Method = "POST";
  50.                req2.Proxy = null;
  51.                req2.CookieContainer.Add(response.Cookies);
  52.                using (Stream reqStream = req2.GetRequestStream())
  53.                    reqStream.Write(byteData2, 0, byteData2.Length);
  54.                MessageBox.Show(linea + mensaje);
  55.            } while (linea != "" || detenerRespuestas == false);

Pero no postea nada, ¿estoy añadiendo bien las cookies?, saludos.
Hasta mañana.
« Última modificación: 5 Diciembre 2014, 19:12 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Iniciar sesion en web con C#
« Respuesta #19 en: 5 Diciembre 2014, 20:01 pm »

Hola a todos, ya me funciona todo correctamente el programa inicia sesión y realiza POST sobre los temas o directorios de la página para ganar puntos, lo demás ya es programación sencilla, le doy las gracias a kubox por todo, sin él no lo habría conseguido, el código para mandar POST con las cookies es el siguiente, solo había que crear un cookiecontainer, gracias.

Código
  1. string postData = "email=terearr@hotmail.com&password=topotamadre";
  2.            byte[] byteData = ASCIIEncoding.ASCII.GetBytes(postData);
  3.            CookieContainer cc = new CookieContainer();
  4.            HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://pagina/user/login");
  5.            req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  6.            //req.Connection = "keep-alive";
  7.            req.CookieContainer = cc;
  8.            req.ContentType = "application/x-www-form-urlencoded";
  9.            req.ContentLength = byteData.Length;
  10.            req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
  11.            req.Host = "pagina.com";
  12.            req.Method = "POST";
  13.            req.Proxy = null;
  14.            using (Stream reqStream = req.GetRequestStream())
  15.                reqStream.Write(byteData, 0, byteData.Length);
  16.            //Cojemos respuesta.
  17.            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
  18.            using (Stream responseStream = response.GetResponseStream())
  19.            {
  20.                using (StreamReader sr = new StreamReader(responseStream))
  21.                {
  22.                    string responseData = sr.ReadToEnd();
  23.                    if (!responseData.Contains("Iniciar se"))
  24.                        MessageBox.Show("Login successful!");
  25.                    else
  26.                        MessageBox.Show("Login failed!");
  27.                }
  28.            }
  29.            string directorio = Directory.GetCurrentDirectory();
  30.            string linea, mensaje;
  31.            StreamReader reader = new StreamReader(directorio + "\\Temas.txt");
  32.            StreamReader readel = new StreamReader(directorio + "\\MisRespuestas.txt");
  33.            detenerRespuestas = false;
  34.            do
  35.            {
  36.                linea = reader.ReadLine();
  37.                mensaje = readel.ReadLine();
  38.                MessageBox.Show("###1111 " + linea + mensaje);
  39.                if (linea == "" || mensaje == "" || detenerRespuestas == true)
  40.                {
  41.                    break;
  42.                }
  43.                string postData2 = "qaa_content=" + mensaje + "&action=reply";
  44.                byte[] byteData2 = ASCIIEncoding.ASCII.GetBytes(postData2);
  45.                HttpWebRequest req2 = (HttpWebRequest)HttpWebRequest.Create(linea + "?Add=1");
  46.                req2.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
  47.                req2.ContentType = "application/x-www-form-urlencoded";
  48.                req2.ContentLength = byteData2.Length;
  49.                req2.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0";
  50.                req2.Host = "pagina.com";
  51.                req2.Method = "POST";
  52.                req2.Proxy = null;
  53.                req2.CookieContainer = cc;
  54.                using (Stream reqStream = req2.GetRequestStream())
  55.                    reqStream.Write(byteData2, 0, byteData2.Length);
  56.                MessageBox.Show(linea + mensaje);
  57.            } while (linea != "" || detenerRespuestas == false);
  58.  

Tema zanjado.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Iniciar Sesion
PHP
::: Devil ::: 1 991 Último mensaje 29 Mayo 2014, 22:19 pm
por Mokonauta
Fallo al iniciar sesion
.NET (C#, VB.NET, ASP)
Kaxperday 6 3,749 Último mensaje 1 Abril 2015, 14:45 pm
por Kaxperday
cuelgue al iniciar sesión w8
Dudas Generales
Astar21 0 1,040 Último mensaje 29 Agosto 2016, 23:15 pm
por Astar21
No deja iniciar sesión en Outlook.com
Dudas Generales
Eleкtro 1 2,029 Último mensaje 29 Mayo 2017, 11:38 am
por Songoku
Iniciar sesion en Facebook con CURL y PHP
PHP
sirefys 4 1,139 Último mensaje 7 Junio 2020, 05:41 am
por [u]nsigned
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines