2012-03-25 11 views
5

Ho diverse pagine sul mio sito Web ASP.NET MVC 3 (non che la tecnologia abbia importanza qui), dove rilevo determinati URL in un tag <script> nella pagina, in modo che il mio JavaScript (memorizzato in un file esterno) può eseguire chiamate AJAX al server.Come impedire ai robot di eseguire la scansione dei miei URL basati su AJAX?

Qualcosa di simile a questo:

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

Ora sul lato server, la maggior parte di questi URL del sono protetti con gli attributi affermando che:

a) Si può accedere solo da AJAX (ad es XmlHttpRequest)

b) si può accedere solo tramite HTTP POST (come si ritorna JSON - sicurezza)

Il problema è, per alcuni reaso n, i bot stanno eseguendo la scansione di questi URL e stanno cercando di eseguire HTTP GET su di essi, risultando in 404.

Avevo l'impressione che i bot non dovessero provare a eseguire la scansione di javascript. Quindi come stanno ottenendo questi URL?

C'è un modo per impedirgli di farlo?

Non riesco a spostare queste variabili URL su un file esterno, perché come suggerisce il commento nel codice precedente, eseguo il rendering dell'URL con il codice server (deve essere fatto sulla pagina effettiva).

Ho praticamente aggiunto il routing al mio sito Web a HTTP 410 (Gone) questi URL (quando non è un AJAX POST). Il che è davvero fastidioso, perché aggiunge un'altra strada alla mia tabella di rotte già convulsa.

Eventuali suggerimenti/suggerimenti?

+0

@ RPM1984: solo per curiosità, hai compilato statistiche sul numero di accessi da user agent? Da questo, di quale tipo di bot sei più tormentato? –

+0

Penso che googlebot abbia una certa capacità di scansione di javascript, quindi potrebbe essere un problema. Googlebot rispetta comunque robots.txt, quindi puoi semplicemente impostarlo per impedirne la scansione. –

risposta

2

Disallow URL dal prefisso nel file robots.txt

+0

cosa intendi con "il prefisso"? puoi espandere un po '? – RPM1984

+0

cioè "Disallow/bla" che impedirà crawler di guardare tutti gli URL che iniziano con/bla (ad esempio/bla/pippo Si può essere più specifico e non permettere il maggior numero di voci di cui hai bisogno. –

+0

hmm non realmente fattibile Ho circa 20 url ajax'ificati, con diversi percorsi/formati, quindi a meno che non li sposti tutti in un determinato percorso url, avrei bisogno di 20 voci robots.txt. – RPM1984

Problemi correlati