2012-03-25 2 views
5

Ich habe mehrere Seiten auf meiner ASP.NET MVC 3-Website (nicht, dass die Technologie hier eine Rolle spielt), wo ich bestimmte URLs in einem <script> Tag auf der Seite rendere, so dass mein JavaScript (in einer externen Datei gespeichert) kann AJAX-Aufrufe an den Server durchführen.Wie kann ich verhindern, dass Bots meine AJAX-basierten URLs kriechen?

Etwas wie folgt aus:

<html> 
    ... 
    <body> 
     ... 
     <script type="text/javascript"> 
     $(function() { 
      myapp.paths.someUrl = '/blah/foo'; // not hardcoded in reality, but N/A here 
     }); 
     </script> 
    </body> 
</html> 

nun auf der Server-Seite, sind die meisten dieser URLs geschützt mit Attributen besagt, dass:

a) Sie können nur von AJAX (zB XmlHttpRequest) zugegriffen werden

b) sie können nur durch HTTP POST zugegriffen werden (wie es gibt JSON - Sicherheit)

Das Problem ist, für einige reaso n, kriechen Bots diese URLs und versuchen HTTP GETs auf ihnen auszuführen, was zu 404s führt.

Ich hatte den Eindruck, dass Bots nicht versuchen sollten, JavaScript zu crawlen. Wie bekommen sie diese URLs?

Gibt es eine Möglichkeit, dass ich sie daran hindern kann?

Ich kann diese URL-Variablen nicht wirklich in eine externe Datei verschieben, da, wie der Kommentar im obigen Code suggeriert, ich die URL mit Server-Code ausgibt (muss auf der aktuellen Seite gemacht werden).

Ich habe im Grunde Routing zu meiner Website zu HTTP 410 (Gone) diese URLs hinzugefügt (wenn es kein AJAX POST ist). Was wirklich nervig ist, weil es meiner bereits verwirrten Routentabelle eine weitere Route hinzufügt.

Irgendwelche Tipps/Vorschläge?

+0

@ RPM1984: nur aus Neugier, haben Sie Statistiken über die Anzahl der Treffer von User Agent zusammengestellt? Von welchen Bots wirst du am meisten geplagt? –

+0

Ich denke, googlebot hat eine begrenzte Fähigkeit, JavaScript zu crawlen, so dass ein Problem sein könnte. Der Googlebot respektiert jedoch die robots.txt-Datei, sodass Sie sie einfach einrichten können, um ein Crawlen zu verhindern. –

Antwort

2

Disallow URL das Präfix in der robots.txt

+0

was meinst du mit dem Präfix? Kannst du ein wenig erweitern? – RPM1984

+0

dh „Disallow/blah“ die Raupen verhindern werden alle URLs zu suchen, die mit/blah (zB/blah/foo beginnen Sie präziser sein können und nicht zulassen, so viele Einträge wie Sie benötigen. –

+0

hmm nicht wirklich machbar Ich habe ungefähr 20 ajaxifizierte URLs mit unterschiedlichen Pfaden/Formaten, also würde ich, wenn ich sie nicht alle auf einen bestimmten URL Pfad bewege, 20 robots.txt Einträge brauchen – RPM1984

Verwandte Themen