Un 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
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=(.*)&amp.*/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
Copia el código anterior en un script llamado (p.ejem) ~/bin/mensaje2facebook e introduce tu password y email en el contenido.
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.