2011-11-19 16 views
9

Mam usługę bezpiecznego połączenia z linkiem, którą prowadzę (expiringlinks.co). Jeśli zmienię nagłówki w php, aby przekierować moich użytkowników, Facebook będzie mógł wyświetlić podgląd strony, do której przekierowuję, kiedy użytkownicy wysyłają do siebie linki za pośrednictwem Facebooka. Chciałbym tego uniknąć. W tej chwili używam wywołania AJAX, aby uzyskać adres URL i javascript do przekierowania, ale powoduje to problemy dla użytkowników, którzy nie używają javascript.Zablokuj facebooka z mojej strony internetowej

Oto kilka sposobów Chciałbym zablokować Facebooka, ale nie wydaje się uzyskać robocze:

  1. Próbowałem blokowanie facebook bot (facebookexternalhit/1.0 i facebookexternalhit/1.1), ale to nie działa, myślę, że nie używają ich do tej funkcji.

  2. Zastanawiam się, czy nie zablokować adresów IP na Facebooku, ale nie mogę znaleźć wszystkich z nich i nie sądzę, że zadziała, dopóki ich nie dostanę.

  3. Myślałem o używaniu CAPTCHA lub nawet przycisku, ale nie mogę zmusić się do zrobienia tego dla moich gości. Nie wspominając o tym, że nie sądzę, by ktokolwiek korzystał z tej strony.

  4. Przeszukałem dokumentację na Facebooku pod kątem metatagów, które "opt-out", ale nie znalazłem, i wątpię, że zaufałbym, gdybym to zrobił.

Jakieś kreatywne pomysły lub pomysł na implementację powyższych? Z góry bardzo dziękuję!

+1

Jak dowiedziałeś się o '(facebookexternalhit/1.0 i facebookexternalhit/1.1)'? Czy to przez ich dokumenty lub porzucili użytkowników użytkowników? Osobiście spróbowałbym skonfigurować dziennik wszystkich agentów użytkownika użytkownika, a następnie utworzyć łącze i uzyskać Facebooka, aby utworzyć podgląd tego linku. Jeśli znajdziesz taki, który mógłby być na Facebooku, zablokuj go, zobacz, co się stanie. Facebook korzysta również z kilku adresów URL, które działają jako proxy dla zewnętrznych treści, takich jak "http: // external.ak.fbcdn.net/safe_image.php" –

+0

Czytałem o botach online, z ich dokumentów i innych źródeł. Używam Piwik do analityki i nie mogę wykryć Facebooka, gdy udostępniam linki. Nie jestem pewien, czy rozumiem, co masz na myśli przez adresy URL jako proxy. –

+0

Używają skryptów z domen innych niż ich domena "facebook.com" do ładowania treści. Również buforują zawartość i jeśli ta sama treść zostanie ponownie zażądana (np. Obraz), Facebook załaduje wersję z pamięci podręcznej zamiast wersji. To może być również w grze tutaj, jeśli próbujesz połączyć się z tym samym adresem URL więcej niż jeden raz. –

Odpowiedz

2

Spróbuj tego - to działa na mnie ...

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

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

?> 
+0

PIĘKNE! Dziękuję bardzo! –

+0

Nie ma za co :) –

0

Możesz spróbować pobrać plik dziennika swojego serwera WWW i wyszukać tam niezajęte useragenty. (może zawierając facebook) Albo, w przeciwnym razie pobierz Logi i usuń wszystkie zawierające przeglądarkę internetową/firefox/operę ... Następnie powinieneś mieć tylko boty useragents na końcu. Następnie można wyszukać na Facebooku.

0

Wszystko, co musisz zrobić, to odpowiednio skonfigurować plik robots.txt.

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

+0

... pod warunkiem, że Facebook faktycznie przestrzega tych zasad. Czy tak jest? – glglgl

+0

@glglgl, Nie próbowałem tego, ale byłbym poważnie zszokowany, gdyby tak poważny gracz online nie podążał za czymś tak podstawowym jak "robots.txt", jeśli cokolwiek z powodów prawnych związanych z indeksowaniem i przechowywaniem treści z inne strony. Jeśli próbowałeś i wiesz inaczej, opublikuj. – Brad

+1

Ja też nie wiem, ale chociaż 'robots.txt' jest dość prosty, to w ogóle nie jest standardem i nie sądzę, by można go było legalnie obwiniać za używanie go. A ponieważ w ogóle nie obchodzi ich prywatność, nie jestem pewien, czy to zrobią, jeśli tylko powiedzą im "plik robots.txt". Jeśli się mylę, mamy szczęście ... – glglgl

0

można spróbować za pomocą meta refresh zamiast przekierowanie JavaScript. Działają one we wszystkich przeglądarkach, a ponieważ strona wciąż zwraca odpowiedź 200, każdy robot powinien przestać je rozwiązywać.

+0

Podoba mi się twoje podejście, ale nie mogę przestać myśleć, że jeśli robot łączący się z Facebookiem wykryje przekierowujące nagłówki HTTP, to dlaczego nie wykryje przekierowań META? –

+0

Ponieważ nagłówki HTTP są wysyłane jako część odpowiedzi, którą bot musi zrozumieć, metaodświeżanie jest po stronie klienta i wymagałoby, aby bot przeanalizował odpowiedź i zidentyfikował odświeżenie. Oczywiście coś, co może zrobić, ale gdybym pisał bota, aby rozwiązać adresy URL, mógłbym powiedzieć, żeby przestał rozwiązywać po otrzymaniu odpowiedzi 200. Warto jednak. – alexarno

+0

Teraz dni, Facebook również staje się inteligentny, aby zidentyfikować tag odświeżania meta. – Goyllo

Powiązane problemy