2011-11-19 19 views
9

Güvenli bir bağlantı yönlendirme hizmetine sahibim (expiringlinks.co). Ziyaretçilerimi yönlendirmek için başlıkları php olarak değiştirirseniz, facebook, kullanıcıların facebook üzerinden birbirlerine bağlantı gönderdiğinde yönlendirdiğim web sitesinin bir önizlemesini gösterebilir. Bundan kaçınmak istiyorum. Şu anda, URL'yi ve javascript'i yönlendirmek için bir AJAX çağrısı kullanıyorum, ancak javascript kullanmayan kullanıcılar için sorunlara yol açıyor. İşte Web siteden Block facebook

Ben facebook engellemek istiyorsanız birçok yolu vardır, ama almak gibi olamaz çalışma:

  1. Ben facebook bot engelleme denedim (facebookexternalhit/1.0 ve facebookexternalhit/1.1) ama çalışmıyor, onları bu işlevsellik için kullanmıyorlar.

  2. Facebook IP adreslerini engellemeyi düşünüyorum, ancak hepsini bulamıyorum ve bunların hepsini almadıkça çalışacağını düşünmüyorum.

  3. Bir CAPTCHA veya bir düğme kullanmayı düşündüm, ancak kendimi ziyaretçilere yapamıyorum. Söylemeye gerek yok, kimse siteyi kullanacağını düşünmüyorum.

  4. "Beni devre dışı bırakacak" meta etiketler için facebook dokümanlarını aradım, ancak bir tane bulamadım ve sahip olduğumdan emin olacağından şüphe duyuyorum.

Herhangi bir yaratıcı fikir veya yukarıdakileri nasıl uygulayacağınız hakkında herhangi bir fikir? Şimdiden çok teşekkür ederim!

+1

Eğer '(facebookexternalhit/1.0 ve facebookexternalhit/1.1)' nereden duydunuz? Dokümanlar aracılığıyla mıydı yoksa ziyaretçi kullanıcı aracıları mı terk etti? Şahsen, tüm kullanıcıların kullanıcı-aracılarının bir günlüğünü kurmayı ve daha sonra bir bağlantı oluşturmayı ve Facebook'un bu bağlantı için bir önizleme oluşturmasını sağlamayı deneyeceğim. Eğer Facebook için olabilecek birini bulursan, engelle, ne olduğuna bak. Facebook ayrıca, http: // external.ak.fbcdn.net/safe_image.php' –

+0

gibi harici içerikler için proxy gibi davranan çeşitli URL'leri kullanarak çevrimiçi olarak botları ve diğer kaynaklardan okur. Analiz için Piwik kullanıyorum ve bağlantıları paylaştığımda Facebook'u tespit edemiyorum. URL'ler tarafından proxy olarak ne demek istediğini anladığımdan emin değilim. –

+0

İçeriğinizi yüklemek için "facebook.com" alan adlarından farklı alanlardaki komut dosyalarını kullanırlar. Ayrıca içeriği önbelleğe alırlar ve aynı içerik tekrar istenirse (resim gibi), Facebook, sürümünüz yerine önbelleğe alınmış sürümlerini yükler. Aynı URL'ye bir kereden fazla bağ kurmaya çalışıyorsanız, bu oyunda da olabilir. –

cevap

2

bu deneyin - Benim için çalışıyor ...

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

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

?> 
+0

GÜZEL! Çok teşekkür ederim! –

+0

Rica ederim :) –

0

Web sunucunuzun günlük dosyasını bulmaya çalışabilir ve orada bulunmayan alışkanlıklar için arama yapabilirsiniz. (belki de facebook içeriyor) Veya, aksi takdirde Günlükleri almak ve her içeren internet explorer/firefox/opera sil ... Sonra sonunda sadece botlar botlar olmalıdır. Sonra facebook birini arayabilir.

0

Yapmanız gereken tek şey uygun şekilde robots.txt dosyasıdır.

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

+0

... sağlanan Facebook aslında bu kurallara uymaktadır. Bu durum mu? – glglgl

+0

@glglgl, Denemedim, ancak böyle büyük bir oyuncu çevrimiçi 'robots.txt' gibi temel bir şey izlemediyse, ciddi bir şok olurdu, eğer endeksleme ve içerik depolama ile ilgili yasal nedenlerden dolayı herhangi bir şey varsa Diğer siteler. Eğer denediyseniz ve başka türlü biliyorsanız, lütfen gönderin. – Brad

+1

Ya ben de bilmiyorum, ama robots.txt' oldukça temel bir standart değil, bir standart değil ve niteyi kullanarak yasal olarak suçlandığını düşünmüyorum. Ve mahremiyete önem vermediği için, sadece bir “robots.txt” tarafından söylenirse, bunu yapacaklarından emin değilim. Eğer yanılıyorsam, şansımız var ... – glglgl

0

Bir meta yenileme yerine bir javascript yönlendirmesi kullanmayı deneyebilirsiniz. Tüm tarayıcılar için çalışırlar ve sayfa, herhangi bir tarayıcının orada çözülmeyi bırakması gereken 200 yanıtı döndürdüğü için.

+0

Yaklaşımınızı seviyorum, ancak yardımcı olamıyorum ama eğer Facebook bağlantı tarayıcısı yönlendiren HTTP üstbilgileri algılarsa, neden META yönlendirmelerini de algılamıyor? –

+0

HTTP üstbilgileri, botun işlevini anlaması gereken yanıtın bir parçası olarak gönderildiği için, meta yenileme istemci tarafıdır ve botun yanıtı ayrıştırmasını ve yenilemeyi tanımlamasını gerektirir. Açıkçası, yapabileceği bir şey vardı, ancak URL'leri çözmek için bir bot yazıyorsam, 200 yanıt aldığında çözümlemeyi durdurmasını söyleyebilirim. Yine de bir değer. – alexarno

+0

Şimdi bir gün, Facebook da meta yenileme etiketini tanımlamak için akıllı oluyor. – Goyllo

İlgili konular