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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Problema al intentar publicar contenido con HttpWebRequest
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al intentar publicar contenido con HttpWebRequest  (Leído 5,648 veces)
lombervid


Desconectado Desconectado

Mensajes: 380


Impossible is nothing, just do it!!


Ver Perfil WWW
Problema al intentar publicar contenido con HttpWebRequest
« en: 2 Agosto 2013, 16:59 pm »

Hola.

Bueno pues eso, estoy intentando usar HttpWebRequest para publicar por ejemplo en un foro (dejo ejemplo para este foro), cuando es solo para loguearse si funciona, pero ya para publicar no:

Código
  1. CookieContainer Cookies = new CookieContainer();
  2. private void button1_Click(object sender, EventArgs e)
  3.        {
  4.            string url = "http://foro.elhacker.net/";
  5.            string vars = "user=usuario&passwrd=password";
  6.            string data_post = "subject=" + title.Text + "&message=" + message.Text;
  7.            if (login(url, vars, url))
  8.            {
  9.                publicar(url, data_post, 62);
  10.            }
  11.            else
  12.            {
  13.                MessageBox.Show("Ocurrio un Error");
  14.            }
  15.        }
  16.  
  17.        public bool login(string url, string vars, string refer = "")
  18.        {
  19.            Encoding charset = Encoding.GetEncoding("iso-8859-1");
  20.            byte[] buffer = charset.GetBytes(vars);
  21.            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(url + "index.php?action=login2");
  22.            Request.Referer = refer;
  23.            Request.UserAgent = "Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/534.23 (KHTML, like Gecko) Chrome/11.0.686.3 Safari/534.23";
  24.            Request.Method = "POST";
  25.            Request.KeepAlive = true;
  26.            Request.CookieContainer = new CookieContainer();
  27.            Request.ContentType = "application/x-www-form-urlencoded";
  28.            Request.ContentLength = buffer.Length;
  29.            Request.AllowAutoRedirect = true;
  30.  
  31.            Stream PostData = Request.GetRequestStream();
  32.            PostData.Write(buffer, 0, buffer.Length);
  33.            PostData.Close();
  34.  
  35.  
  36.            HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
  37.  
  38.            foreach (Cookie cook in Response.Cookies)
  39.            {
  40.                Cookies.Add(cook);
  41.            }
  42.            Stream Answer = Response.GetResponseStream();
  43.            StreamReader _Answer = new StreamReader(Answer);
  44.            string respuesta = _Answer.ReadToEnd();
  45.            loginurl.Text = Response.ResponseUri.ToString();
  46.            Response.Close();
  47.            Answer.Close();
  48.            _Answer.Close();
  49.            if (!respuesta.Contains("id=\"button_login\"") && !respuesta.Contains("<input type=\"text\" name=\"user\"")) return true;
  50.            return false;
  51.        }
  52.  
  53.        public void publicar(string url, string data_post, int id)
  54.        {
  55.  
  56.            Encoding charset = Encoding.GetEncoding("iso-8859-1");
  57.            byte[] buffer = charset.GetBytes(data_post);
  58.            HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(url + "index.php?action=post2;start=0;board=" + id);
  59.            Request.Referer = url;
  60.            Request.UserAgent = "Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/534.23 (KHTML, like Gecko) Chrome/11.0.686.3 Safari/534.23";
  61.            Request.Method = "POST";
  62.            Request.KeepAlive = true;
  63.            Request.CookieContainer = Cookies;
  64.            Request.ContentType = "application/x-www-form-urlencoded";
  65.            Request.ContentLength = buffer.Length;
  66.            Request.AllowAutoRedirect = true;
  67.  
  68.            Stream PostData = Request.GetRequestStream();
  69.            PostData.Write(buffer, 0, buffer.Length);
  70.            PostData.Close();
  71.  
  72.  
  73.            HttpWebResponse Response = (HttpWebResponse)Request.GetResponse();
  74.  
  75.            Stream Answer = Response.GetResponseStream();
  76.            StreamReader _Answer = new StreamReader(Answer, Encoding.GetEncoding("iso-8859-1"));
  77.            post.Text = _Answer.ReadToEnd();
  78.            posturl.Text = Response.ResponseUri.ToString();
  79.            Response.Close();
  80.            Answer.Close();
  81.            _Answer.Close();
  82.        }

Y también intente usando:

Código
  1. Request.Credentials = new NetworkCredential("usuario", "password");

Pero de ninguna forma me funciono   :-(

El problema es que me dice que no estoy logueado, ¿como le tendria que hacer para que se loguee y publique?

Saludos!   ;)


En línea

kub0x
Enlightenment Seeker
Moderador
***
Desconectado Desconectado

Mensajes: 1.486


S3C M4NI4C


Ver Perfil
Re: Problema al intentar publicar contenido con HttpWebRequest
« Respuesta #1 en: 2 Agosto 2013, 17:35 pm »

Guardando la cookie del login y empleándola al publicar.


« Última modificación: 2 Agosto 2013, 17:37 pm por kub0x » 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

lombervid


Desconectado Desconectado

Mensajes: 380


Impossible is nothing, just do it!!


Ver Perfil WWW
Re: Problema al intentar publicar contenido con HttpWebRequest
« Respuesta #2 en: 2 Agosto 2013, 18:45 pm »

Eso es lo que intento hacer con:
Código
  1.  
  2.           foreach (Cookie cook in Response.Cookies)
  3.           {
  4.               Cookies.Add(cook);
  5.           }

pero aun asi me dice que no estoy logueado.

Puse un MessageBox antes del foreach y segun no hay Cookies, me lanza 0 en la ventana con Response.Cookies.Count.

Saludos!
« Última modificación: 2 Agosto 2013, 18:51 pm por lombervid » En línea

lombervid


Desconectado Desconectado

Mensajes: 380


Impossible is nothing, just do it!!


Ver Perfil WWW
Re: Problema al intentar publicar contenido con HttpWebRequest
« Respuesta #3 en: 3 Agosto 2013, 01:38 am »

Ya vi porque no podia capturar las Cookies, era por el:
Código
  1. Request.AllowAutoRedirect = true;

Cambiandolo a:
Código
  1. Request.AllowAutoRedirect = false;

Ya las captura, pero me dice que la sesión a expirado  :(
« Última modificación: 3 Agosto 2013, 01:41 am por lombervid » En línea

#!drvy


Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Problema al intentar publicar contenido con HttpWebRequest
« Respuesta #4 en: 3 Agosto 2013, 03:53 am »

Tienes que capturar (y enviar) el sesc. Es una variable que a veces aparece en la URL y otras antes de publicar el post (como un campo hidden).

PD: La forma mas facil es obtener el href del enlace de "Salir" en el menu.. ahí aparece. Eso si, para las versiones 2.x del SMF es otra historia..

Saludos
« Última modificación: 3 Agosto 2013, 03:55 am por drvy | BSM » En línea

lombervid


Desconectado Desconectado

Mensajes: 380


Impossible is nothing, just do it!!


Ver Perfil WWW
Re: Problema al intentar publicar contenido con HttpWebRequest
« Respuesta #5 en: 3 Agosto 2013, 05:11 am »

Pues si no me equivoco esa es una de las Cookies que supuestamenta ya mando, que ¿seria la PHPSESSID?.

antes de poder capturar la Cookies me salia que debia de loguearme para poder publicar, y ahora que ya las puedo capturar lo que me dice es que ya ha expirado la sesión.

Saludos!
En línea

#!drvy


Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Problema al intentar publicar contenido con HttpWebRequest
« Respuesta #6 en: 7 Agosto 2013, 06:07 am »

Citar
Pues si no me equivoco esa es una de las Cookies que supuestamenta ya mando, que ¿seria la PHPSESSID?.

No. Es un string aleatorio generado para cada usuario (y sesión creo). Puedes verlo en la url si le das al boton citar por ejemplo (solo para 1.1.xx). Otras veces aparece en el código html como un <input type="hidden" />

http://foro.elhacker.net/post.html;quote=1876742;topic=396377.0;num_replies=1;sesc=41XXXXXXX850f82d0395e5c696b7bd5

Citar
y ahora que ya las puedo capturar lo que me dice es que ya ha expirado la sesión.

Es precisamente porque no mandas el sesc.

Saludos
En línea

lombervid


Desconectado Desconectado

Mensajes: 380


Impossible is nothing, just do it!!


Ver Perfil WWW
Re: Problema al intentar publicar contenido con HttpWebRequest
« Respuesta #7 en: 7 Agosto 2013, 06:11 am »

No. Es un string aleatorio generado para cada usuario (y sesión creo). Puedes verlo en la url si le das al boton citar por ejemplo (solo para 1.1.xx). Otras veces aparece en el código html como un <input type="hidden" />

http://foro.elhacker.net/post.html;quote=1876742;topic=396377.0;num_replies=1;sesc=41XXXXXXX850f82d0395e5c696b7bd5

Es precisamente porque no mandas el sesc.

Saludos

si, ya lo he visto, solo que no se por qué en algunos si sale como sesc y en otros sales tipo a5sd64d.

Supongo que ha de ser similar al secyrity token que se tiene que usar en los VB.

Solo una cosa más, ¿ese se enviaria como otra variable en post, verdad?

Saludos y Gracias  ;-)
En línea

#!drvy


Desconectado Desconectado

Mensajes: 5.850



Ver Perfil WWW
Re: Problema al intentar publicar contenido con HttpWebRequest
« Respuesta #8 en: 7 Agosto 2013, 06:14 am »

Bueno, nunca llegue a jugar con 2.x.xx a fondo asi que realmente te hablo solo con conocimientos de la versión 1.x.xx.

Citar
si, ya lo he visto, solo que no se por qué en algunos si sale como sesc y en otros sales tipo a5sd64d.
El sesc es propio de la versión 1.x.xx mientras que el otro es propio de la versión 2.x.xx

Citar
Solo una cosa más, ¿ese se enviaria como otra variable en post, verdad?

En el source de 1.x.xx lo intenta recoger como $_REQUEST.. eso en php significa que lo busca en POST o GET y tambien en COOKIE. En el 2.x.xx no se como va pero supongo que lo mas seguro es enviarlo por POST.

Saludos
En línea

lombervid


Desconectado Desconectado

Mensajes: 380


Impossible is nothing, just do it!!


Ver Perfil WWW
Re: Problema al intentar publicar contenido con HttpWebRequest
« Respuesta #9 en: 12 Septiembre 2013, 22:11 pm »

Bueno, nunca llegue a jugar con 2.x.xx a fondo asi que realmente te hablo solo con conocimientos de la versión 1.x.xx.
El sesc es propio de la versión 1.x.xx mientras que el otro es propio de la versión 2.x.xx

En el source de 1.x.xx lo intenta recoger como $_REQUEST.. eso en php significa que lo busca en POST o GET y tambien en COOKIE. En el 2.x.xx no se como va pero supongo que lo mas seguro es enviarlo por POST.

Saludos

Hola.

Primerop que nada, gracias por tus respuestas y disculpa que tardara en contestar pero andaba algo ocupado con otras cosas y no habia tenido tiempo de probarlo.

Bueno pues ya capture la SsessionVar y SsessionID (que son los de 2.x) y los mande por post, pero me sigue diciendo que la sesion ha caducado.

Lo que pude ver que hay otra variable que se manda al crear Hilos "seqnum", que tambien la mando pero al comparar la que mando pero igual me dice que la sesion ha caducado.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pregunta HttpWebRequest c#
.NET (C#, VB.NET, ASP)
lamique 1 2,364 Último mensaje 22 Febrero 2013, 17:49 pm
por lamique
Enviar cookies en HttpWebRequest C#
.NET (C#, VB.NET, ASP)
Miguel2706 1 2,289 Último mensaje 1 Noviembre 2013, 00:22 am
por Spiritdead5
[SOLUCIONADO] Headers HttpWebRequest « 1 2 »
.NET (C#, VB.NET, ASP)
TMarmol 11 8,233 Último mensaje 1 Julio 2014, 21:52 pm
por TMarmol
Twitter borrará hasta 10 millones de usuarios por publicar contenido para ...
Noticias
wolfbcn 0 1,550 Último mensaje 6 Mayo 2015, 21:30 pm
por wolfbcn
Problema al intentar publicar mi web con Filezilla y hosting gratuito awardspace
Desarrollo Web
alais 1 1,467 Último mensaje 29 Octubre 2018, 20:02 pm
por #!drvy
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines