Autor
|
Tema: Problema al intentar publicar contenido con HttpWebRequest (Leído 5,939 veces)
|
lombervid
Desconectado
Mensajes: 380
Impossible is nothing, just do it!!
|
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: CookieContainer Cookies = new CookieContainer (); private void button1_Click(object sender, EventArgs e) { string url = "http://foro.elhacker.net/"; string vars = "user=usuario&passwrd=password"; string data_post = "subject=" + title.Text + "&message=" + message.Text; if (login(url, vars, url)) { publicar(url, data_post, 62); } else { MessageBox.Show("Ocurrio un Error"); } } public bool login(string url, string vars, string refer = "") { Encoding charset = Encoding.GetEncoding("iso-8859-1"); byte[] buffer = charset.GetBytes(vars); HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(url + "index.php?action=login2"); Request.Referer = refer; Request.UserAgent = "Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/534.23 (KHTML, like Gecko) Chrome/11.0.686.3 Safari/534.23"; Request.Method = "POST"; Request.KeepAlive = true; Request .CookieContainer = new CookieContainer (); Request.ContentType = "application/x-www-form-urlencoded"; Request.ContentLength = buffer.Length; Request.AllowAutoRedirect = true; Stream PostData = Request.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); HttpWebResponse Response = (HttpWebResponse)Request.GetResponse(); foreach (Cookie cook in Response.Cookies) { Cookies.Add(cook); } Stream Answer = Response.GetResponseStream(); StreamReader _Answer = new StreamReader (Answer ); string respuesta = _Answer.ReadToEnd(); loginurl.Text = Response.ResponseUri.ToString(); Response.Close(); Answer.Close(); _Answer.Close(); if (!respuesta.Contains("id=\"button_login\"") && !respuesta.Contains("<input type=\"text\" name=\"user\"")) return true; return false; } public void publicar(string url, string data_post, int id) { Encoding charset = Encoding.GetEncoding("iso-8859-1"); byte[] buffer = charset.GetBytes(data_post); HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(url + "index.php?action=post2;start=0;board=" + id); Request.Referer = url; Request.UserAgent = "Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/534.23 (KHTML, like Gecko) Chrome/11.0.686.3 Safari/534.23"; Request.Method = "POST"; Request.KeepAlive = true; Request.CookieContainer = Cookies; Request.ContentType = "application/x-www-form-urlencoded"; Request.ContentLength = buffer.Length; Request.AllowAutoRedirect = true; Stream PostData = Request.GetRequestStream(); PostData.Write(buffer, 0, buffer.Length); PostData.Close(); HttpWebResponse Response = (HttpWebResponse)Request.GetResponse(); Stream Answer = Response.GetResponseStream(); StreamReader _Answer = new StreamReader (Answer, Encoding .GetEncoding("iso-8859-1")); post.Text = _Answer.ReadToEnd(); posturl.Text = Response.ResponseUri.ToString(); Response.Close(); Answer.Close(); _Answer.Close(); }
Y también intente usando: 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
Mensajes: 1.486
S3C M4NI4C
|
Guardando la cookie del login y empleándola al publicar.
|
|
« Última modificación: 2 Agosto 2013, 17:37 pm por kub0x »
|
En línea
|
|
|
|
lombervid
Desconectado
Mensajes: 380
Impossible is nothing, just do it!!
|
Eso es lo que intento hacer con: foreach (Cookie cook in Response.Cookies) { Cookies.Add(cook); }
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
Mensajes: 380
Impossible is nothing, just do it!!
|
Ya vi porque no podia capturar las Cookies, era por el: Request.AllowAutoRedirect = true;
Cambiandolo a: 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
|
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
Mensajes: 380
Impossible is nothing, just do it!!
|
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
|
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=41XXXXXXX850f82d0395e5c696b7bd5y 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
Mensajes: 380
Impossible is nothing, just do it!!
|
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
|
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. 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 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
Mensajes: 380
Impossible is nothing, just do it!!
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pregunta HttpWebRequest c#
.NET (C#, VB.NET, ASP)
|
lamique
|
1
|
2,538
|
22 Febrero 2013, 17:49 pm
por lamique
|
|
|
Enviar cookies en HttpWebRequest C#
.NET (C#, VB.NET, ASP)
|
Miguel2706
|
1
|
2,448
|
1 Noviembre 2013, 00:22 am
por Spiritdead5
|
|
|
[SOLUCIONADO] Headers HttpWebRequest
« 1 2 »
.NET (C#, VB.NET, ASP)
|
TMarmol
|
11
|
8,906
|
1 Julio 2014, 21:52 pm
por TMarmol
|
|
|
Twitter borrará hasta 10 millones de usuarios por publicar contenido para ...
Noticias
|
wolfbcn
|
0
|
1,787
|
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,672
|
29 Octubre 2018, 20:02 pm
por #!drvy
|
|