Script para postear en Facebook
jueves, 23 de septiembre de 2010Un tremendamente simple script para publicar en Facebook mensajes rápidos. En realidad el script estaba y está pensado para recibir mensajes desde otras aplicaciones y enviarlos a Facebook, pero vamos sirve para lo mismo que para lo que está desarrollada esta página https://m.facebook.com/ que es la que usa para postear.
Quizás hayais visto/probado algún script similar que corren por internet. Es increible pero el 99% no funcionan y muy probablemente no lo han hecho nunca por un motivo muy sencillo: el bloger que lo ha difundido se ha limitado a hacer copy+paste de algo que leyó, por supuesto sin probar nada ni más interés que repetir como un loro lo que encuentra por la web (algo tristemente habitual).
¿Y porque fallan generalmente estos script? pues en los 3 o 4 que he podido probar el motivo es bien tonto: porque inicialmente se hicieron por un ingles, para su página en facebook en ingles. Cuando tu te logeas en facebook, el sitio detecta tus opciones de idioma y sirve formularios EXCLUSIVOS para usuarios de Español (es decir, el textarea ya no se llama «message» sino «mensaje«, y el botón que hay que pulsar no es «Share» sino «Compartir»), … a partir de ahí, cualquier script inglés simplemente no servirá de nada.
Basicamente el siguiente script lo que hace es: – Simulando ser un navegador, logearse en la página de Facebook con tu email/password y navegar por un par de páginas hasta obtener un número secreto que tenemos que enviar conjuntamente con el mensaje de texto. Una vez obtenido este número rellena el formulario casi como lo haríamos a mano:
#!/bin/bash
Copia el código anterior en un script llamado (p.ejem) ~/bin/mensaje2facebook e introduce tu password y email en el contenido.
texto=$1
if [ -z "$texto" ]; then echo "Falta el texto que quieres escribir"; exit 1; fi
texto=${texto:0:140}
email="tu-email-en-facebook@server.com"
pass="12345678"
cokkies="~/.cookies.txt"
user_agent="Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; es-ES)"
pagina=`curl -L --silent --keepalive-time 5 --user-agent "${user_agent}" --cookie "${cokkies}" --cookie-jar "${cokkies}" -d "email=$email" -d "pass=$pass" -d "login=Entrar" https://m.facebook.com/login.php`
redireccion=`echo $pagina | sed -r 's/.*href="(http:.*;manual_redirect=1)".*/\1/g'`
pagina2=`curl -L --silent --user-agent "${user_agent}" --cookie "${cokkies}" --cookie-jar "${cokkies}" "$redireccion"`
formId=`echo -n $pagina2 | sed -r 's/.*name="post_form_id" value="([^"]*)".*/\1/g'`
dtsg=`echo -n $pagina2 | sed -r 's/.*name="fb_dtsg" value="([^"]*)".*/\1/g'`
redireccion2=`echo $redireccion | sed -r 's/.*\/home.php\?(.*)&refid=(.*)&.*/http:\/\/m.facebook.com\/a\/home.php?\1\&refid=\2/g'`
respuesta=`curl -X POST -L --silent --user-agent "${user_agent}" --cookie "${cokkies}" --cookie-jar "${cokkies}" --data-urlencode "status=$texto" -d "update=Compartir" -d "post_form_id=$formId" -d "fb_dtsg=$dtsg" "$redireccion2"`
exit
Convierte en ejecutable el script (chmod +x ~/bin/mensaje2facebook)
Para escribir en facebook simplemente abre una consola y escribes
mensaje2facebook "hola gente"
Nota I: Facebook tiene unos límites bastante severos en cuanto la publicación via scripts y demás. Es muy facil alcanzar el limite de mensajes por hora (que no recuerdo ahora cual es)
Nota II: El script recorta la longitud del mensaje a 140 caracteres… sin avisar ni más protocolo. Simplemente envía los 140 primeros.
frikosal
#1/ 23 de September/2010 a 18:22:41
Otros comentarios de «frikosal»
Juer, que virguería, no sabía ni que fuera posible semejante cosa.
Conste que yo en mi juventud loca había programado en bash.
Trebol-A
#2/ 23 de September/2010 a 20:23:57
Otros comentarios de «Trebol-A»
Bue, ya parece que se curó usted de esas fiebres juveniles. A juzgar por sus fotos sin secuelas !! :)
Frikosal
#3/ 24 de September/2010 a 09:19:21
Otros comentarios de «Frikosal»
Si que deja secuelas el trabajo intenso con ordenador durante años. Es muy malo para el espíritu, te vuelve impaciente e irritable y te dificulta el trato con seres humanos. Por lo menos a mi me ha pasado.
Estupendo cuaderno !
alex
#4/ 06 de October/2010 a 01:36:23
Otros comentarios de «alex»
Knalito:bin alex$ mensaje2facebook "hola"
curl: option --keepalive-time: is unknown
curl: try 'curl --help' or 'curl --manual' for more information
sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
curl: option --data-urlencode: is unknown
curl: try 'curl --help' or 'curl --manual' for more information
juanmol
#5/ 19 de October/2010 a 12:24:37
Otros comentarios de «juanmol»
no chuta ¿no? al menos a mi no me funciona :-/
Trebol-A
#6/ 19 de October/2010 a 12:56:00
Otros comentarios de «Trebol-A»
No, desde hace un par de dias no funciona, parece que han cambiado algo en la página de m.facebook, habría que darle un repaso pero no tenido tiempo....
Trebol-A
#7/ 19 de October/2010 a 17:10:33
Otros comentarios de «Trebol-A»
Arreglado, ya vuelve a estar funcional: http://wp.me/p11i89-1u0
18 de December, 2024 @ 16:50