2011-11-19 1 views
9

Tengo un servicio de dirección de enlace seguro que estoy ejecutando (expiringlinks.co). Si cambio los encabezados en php para redirigir a mis visitantes, Facebook puede mostrar una vista previa del sitio web al que estoy redirigiendo cuando los usuarios envían enlaces entre sí a través de Facebook. Deseo evitar esto En este momento, estoy usando una llamada AJAX para obtener la URL y javascript para redirigir, pero está causando problemas para los usuarios que no usan javascript.Bloquear facebook desde mi sitio web

Aquí hay una serie de formas que me gustaría bloquear facebook, pero me parece que no puede conseguir trabajo:

  1. he intentado bloquear el bot facebook (facebookexternalhit/1.0 y facebookexternalhit/1.1) pero no está funcionando, no creo que los estén usando para esta funcionalidad.

  2. Estoy pensando en bloquear las direcciones IP de facebook, pero no puedo encontrar todas, y no creo que funcione a menos que las obtenga todas.

  3. He pensado en usar un CAPTCHA o incluso un botón, pero no puedo obligarme a hacerlo a mis visitantes. Sin mencionar que no creo que nadie use el sitio.

  4. He buscado en los documentos de Facebook metaetiquetas que me "excluirían", pero no he encontrado ninguna, y dudo que confíe en ella si tuviera.

¿Alguna idea creativa o alguna idea sobre cómo implementar las de arriba? ¡Muchas gracias de antemano!

+1

¿Cómo se enteró de '(facebookexternalhit/1.0 y facebookexternalhit/1.1)'? ¿Fue a través de sus documentos o han abandonado los agentes de usuario visitante? Personalmente, intentaba configurar un registro de todos los usuarios-agentes del usuario y luego crear un enlace, y hacer que Facebook creara una vista previa para este enlace. Si encuentras uno que podría ser para Facebook, bloquealo, mira lo que sucede. Facebook también utilizar varias direcciones URL que actúan como sustitutos de contenido externo, como 'http: // external.ak.fbcdn.net/safe_image.php' –

+0

leí acerca de los robots de línea, de sus documentos y otras fuentes. He estado usando Piwik para análisis, y no puedo detectar Facebook cuando comparto enlaces. No estoy seguro de entender lo que quiere decir con las URL como proxies. –

+0

Utilizan scripts de dominios distintos de su dominio "facebook.com" para cargar su contenido. También almacenan en caché el contenido y si se vuelve a solicitar el mismo contenido (como la imagen), Facebook cargará su versión en caché en lugar de su versión. Eso también puede estar en juego aquí si intentas vincular a la misma URL más de una vez. –

Respuesta

2

Prueba esto - que funciona para mí ...

<?php 
$ua = $_SERVER['HTTP_USER_AGENT']; 

if (preg_match('/facebookexternalhit/si',$ua)) { 
header('Location: no_fb_page.php'); 
die() ; 
} 

?> 
+0

¡HERMOSO! Muchas gracias! –

+0

De nada :) –

0

Puede tratar de obtener el archivo de registro de su servidor web, y buscar allí agentes de uso no causales. (Quizás contenga Facebook) O, de lo contrario, obtenga los Registros y elimine todos los que contengan internet explorer/firefox/opera ... Entonces, al final, debería tener bots tolerragents al final. Entonces podrías buscar el facebook.

0

Todo lo que necesita hacer es configurar adecuadamente robots.txt.

http://www.robotstxt.org/robotstxt.html

+0

... siempre que Facebook obedezca realmente estas reglas. Es el caso? – glglgl

+0

@glglgl, no lo he intentado, pero me sorprendería mucho si un jugador tan importante en línea no siguiera algo tan básico como 'robots.txt', en todo caso por razones legales relacionadas con la indexación y el almacenamiento de contenido de otros sitios. Si lo ha intentado, y sabe lo contrario, por favor publíquelo. – Brad

+1

No lo sé tampoco, pero si bien 'robots.txt' es bastante básico, no es un estándar en absoluto, y no creo que se les pueda culpar legalmente por usarlo. Y como no les importa en absoluto la privacidad, no estoy seguro de que lo hagan si simplemente les piden un 'robots.txt'. Si estoy equivocado, tenemos suerte ... – glglgl

0

Usted podría tratar de usar una meta de actualización en lugar de una redirección javascript. Funcionan para todos los navegadores y debido a que la página aún devuelve una respuesta de 200, cualquier rastreador debería dejar de resolver allí.

+0

Me gusta su enfoque, pero no puedo evitar pensar que si el rastreador de enlaces de Facebook detecta la redirección de los encabezados HTTP, ¿por qué no también detectar los redireccionamientos de META? –

+0

Debido a que los encabezados HTTP se envían como parte de la respuesta, que el bot debe entender para funcionar, la actualización de meta es del lado del cliente y requeriría que el bot analice la respuesta e identifique la actualización. Obviamente, algo podría hacer, pero si escribiera un bot para resolver URL, podría decirle que dejara de resolver una vez que recibiera una respuesta de 200. Vale la pena ir. – alexarno

+0

Hoy en día, Facebook también se vuelve inteligente para identificar la etiqueta meta refresh. – Goyllo

Cuestiones relacionadas