5 Réponses :


-3
votes

Nous n'avons pas de robot. Nous avons un grattoir qui racle des données méta sur les pages qui ont des boutons similaires / sont partagées sur FB.


6 commentaires

"Cela dépend de ce que la signification du mot" est "est". Merci pour la non-réponse. En retirant 100 pages en quelques secondes, c'est un crawl, tout ce que vous voulez l'appeler. Clairement, ce "grattoir" va des apénuts et commence à tirer de nombreux pages qui n'ont rien à voir avec le lien étant affiché. Ou FB crée furtivement un concurrent de recherche sur Google. Ou peut-être que le chenille de quelqu'un d'autre exécute des boutons externes comme des boutons? Quelque chose de fou passe.


J'ai supprimé le graphe ouverte et ce visage FacebookeSternalHit / 1.1 a cessé de gêner ma connexion de base de données sur deux sites qui ont fonctionné sans heurts sur deux hôtes différents pendant 8 ans chacun.


Ce n'est pas une réponse particulièrement utile. Nous avons constaté une quantité substantielle de comportement de chenilles / d'araignées des serveurs de Facebook. Les demandes sont effectuées à ce qui pourrait être considéré comme un taux abusif, ce qui entraîne la mise en place de la base de données, etc.


Selon votre propre documentation, vous avez un chenouillage: développeurs.facebook.com/docs/sharing / webmasters / robot


Veuillez noter que ce bogue de longue date et abhorrent dans le système Facebook, qui envoie à la fois un trafic de gratte sans UA (brut) et également des inondations de trafic grattant qui peuvent supprimer votre site développeurs.facebook.com/bugs/1654459311255613


Et aussi une réponse brute ici pour 1) ne spécifie pas votre rôle dans FB dans la réponse, puisque vous dites "nous". 2) Nitpicking sur la langue, vous auriez pu clarifier sans être dédaigneux. 3) Ne pas répondre à la question du tout depuis clairement, les informations nécessaires sont de savoir si le "racleur" respecte calendrier . Si vous pensez que la réponse à propos de cawawl-retard n'est pas important car c'est un "grattoir", vous êtes le type d'employé de Facebook qui gagne ces bots Facebook un cauchemar.



3
votes

Facebook utilise effectivement cet algorithme que vous pouvez vérifier vous-même ici:

http://developers.facebook.com/tools/debug

La durée de vie de la cache Facebook de ces données est variable, mais elle est entre 24 et 48 heures de mon expérience.

vous -Can- Cependant, faites le cache "Invalider" si vous ajoutez une partie à votre URL afin que les utilisateurs partagent le nouveau ou que vous puissiez fournir des liens bit.ly (et similaires) qui auront le même effet .

Étant donné que ce n'est pas effectivement rampant, vous ne pouvez pas forcer la force à retarder un grattage (et vous ne devriez pas, car cela créerait une mauvaise expérience utilisateur - ils attendraient un moment pour que le grattoir se termine et ils seraient fournis avec un lien partageable qui n'est pas jolie). Vous pouvez toutefois déclencher manuellement le raclage à des intervalles définis afin d'assurer une meilleure expérience utilisateur (ils n'attendraient pas que les données soient en cache) et l'équilibrage de la charge de serveur.


1 commentaires

Ne répond pas vraiment à la question ou donnez à aucune aide sur la surcharge de la circulation sur Facebook. La documentation de Facebook sur le comportement de leur bot et le comportement réel divergent massivement. Voir ce rapport de bogue pour des exemples developers.facebook.com/bugs/1654459311255613



14
votes

Non, ça ne respecte pas les robots.txt

Contrairement à d'autres réponses ici, FacebookeXternalHit se comporte comme le plus méchant des rampants. Si cela a obtenu les URL, il demande de ramper ou de partir comme des boutons comme cela n'a pas beaucoup d'importance lorsqu'il traverse chacun de ceux d'un taux insensé.

Nous obtenons parfois plusieurs centaines de hits par seconde, car il passe presque chaque URL sur notre site. Il tue nos serveurs à chaque fois. La chose amusante est que, lorsque cela se produit, nous pouvons voir que Googlebot ralentit et attend que les choses s'installent avant de ramener lentement la sauvegarde. FacebookeXternalLit, d'autre part, continue de battre nos serveurs, souvent plus difficile que le combat initial qui nous a tué.

Nous devons courir de nombreux serveurs plus bêtement que nous n'avons réellement besoin de notre trafic, juste à cause de FacebookeXternalHit. Nous avons fait des tonnes de recherche et je ne trouve pas un moyen de les ralentir.

Comment est-ce une bonne expérience utilisateur, Facebook?


2 commentaires

On souhaite les rembourser avec une loris inverse-loris lorsque vous voyez un tel comportement ... mais avec leur infrastructure, ils ne remarqueraient même pas.


Pour une raison quelconque, je ne me laisserai donc pas commenter une autre réponse, mais la réponse de Hank est excellente et similaire à ce que nous avons mis en œuvre (bien que l'utilisation d'un middleware Django personnalisé).



5
votes

pour une question similaire , j'ai proposé une solution technique qui Taux simplement limite la charge basée sur l'agent utilisateur.

Code répété ici pour plus de commodité: P>

Étant donné que l'on ne peut pas faire appel à leur hubris et laisser tomber leur bloc IP est joli draconien, voici mon Solution technique. p>

en PHP, exécutez le code suivant aussi rapidement que possible pour chaque demande. P>

define( 'FACEBOOK_REQUEST_THROTTLE', 2.0 ); // Number of seconds permitted between each hit from facebookexternalhit

if( !empty( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/^facebookexternalhit/', $_SERVER['HTTP_USER_AGENT'] ) ) {
    $fbTmpFile = sys_get_temp_dir().'/facebookexternalhit.txt';
    if( $fh = fopen( $fbTmpFile, 'c+' ) ) {
        $lastTime = fread( $fh, 100 );
        $microTime = microtime( TRUE );
        // check current microtime with microtime of last access
        if( $microTime - $lastTime < FACEBOOK_REQUEST_THROTTLE ) {
            // bail if requests are coming too quickly with http 503 Service Unavailable
            header( $_SERVER["SERVER_PROTOCOL"].' 503' );
            die;
        } else {
            // write out the microsecond time of last access
            rewind( $fh );
            fwrite( $fh, $microTime );
        }
        fclose( $fh );
    } else {
        header( $_SERVER["SERVER_PROTOCOL"].' 503' );
        die;
    }
}


5 commentaires

Je suis un idiot total avec php. Y a-t-il un guide rapide sur où coller ceci. Mon site est un site PHP utilisant un CMS et Smarty. Il a un fichier index.php qui appelle les plugins. Alors, je fais cela un inclus et l'appelez-le?


@Christina Si vous utilisez un CMS PHP, il dispose probablement d'un fichier de configuration PHP (c.-à-d. "Config.php ') qui définit les variables de connexion de base de données. Je voudrais le mettre dans ce fichier car cela n'est pas susceptible d'être écrasé lors des mises à niveau, etc.


AVERTISSEMENT: Lorsqu'une URL est partagée pour la première fois sur FB, il s'agit d'un grattage initial des balises Open Graph Meta et accélère une copie de l'image OG: image (image présentée) pour l'URL. Si vous bloquez ces demandes initiales, vos aperçus de partage de FB seront complètement cassés, un état qui peut durer des jours / semaines dans de nombreuses situations. Vous ne voulez vraiment pas bloquer accidentellement ces demandes, ce qui signifie une solution limitative de taux comme celle de cette réponse est dangereuse, car il n'a aucun moyen de savoir s'il s'agit d'un premier gratte ou d'un recalement de l'URL. Facebook cue-t-il pour nous mettre dans cette situation.


@jerclarke - C'est vrai ce que vous dites, mais quelle alternative existe-t-il sauf pour continuer à mettre en évidence les problèmes ici et dans le rapport de bogue ici: développeurs.facebook.com/support/bugs/1654459311255613


Hey sol. Ouais c'est juste ça, nous n'avons aucune option autre que de se plaindre. Tout ce que nous utilisons pour bloquer cela est susceptible de tuer nos actions Facebook. Je veux juste avertir les gens que le blocage intelligent aura des effets secondaires surprenants.



0
votes

Si vous exécutez sur Ubuntu Server et que vous utilisez un pare-feu UFW, vous voudrez peut-être essayer

UFW Limit Proto TCP du 31.13.24.0/21 Port 80 à tout

Pour toutes ces adresses IP: 31.13.24.0/21 31.13.64.0/18 66.220.144.0/20 69.63.176.0/20 69.171.224.0/19 74.119.76.0/22 103.4.96.0/22 173.252.64.0/18 204.15.20.0/22 ​​

Comme indiqué ici: Quelle est la gamme d'adresses IP du robot de graphique ouvert de Facebook? < / a>


0 commentaires