Come ottenere l'URL "reale" del sito (prima di essere riscritto)

5

Se un sito utilizza il file .htaccess per riscrivere l'URL per es. migliore SEO. È possibile scoprire qual è l'URL "reale"?

    
posta 02.02.2012 - 16:49
fonte

2 risposte

5

Questo non è possibile a meno che tu non conosca la regola di riscrittura. In alcuni casi l'accesso diretto al file "reale" è vietato interamente.

Oltre a questo puoi provare a utilizzare DirBuster con un elenco di directory personalizzato, ad esempio un elenco creato dagli urti amichevoli. Essendo hacker, sappiamo tutti come scrivere codice, quindi questo è piuttosto banale.

    
risposta data 02.02.2012 - 16:52
fonte
7

Non sono sicuro di quale sia la tua domanda. Supponiamo che tu abbia una semplice regola di riscrittura come reindirizzare il contenuto da http://www.example.com/old.html a http://www.example.com/descriptive-directory/new.html qualcosa del tipo:

RewriteRule ^old.html$ http://www.example.com/descriptive-directory/new.html [R=301,L]

Quindi il browser web di un utente invia una richiesta http GET a http://www.example.com per recuperare old.html :

GET /old.html HTTP/1.1
Host: www.example.com

Il server web lo rileva nelle regole di riscrittura e invia una risposta http dal server come:

HTTP/1.1 301 Moved Permanently
Location: http://www.example.com/descriptive-directory/new.html

e il tuo browser recupera qualsiasi contenuto sia a http://www.example.com/descriptive-directory/new.html come se avessi digitato originariamente l'URL riscritto.

Quindi qual è la tua domanda? Presumibilmente, conosci (e puoi facilmente registrare) gli indirizzi web che il tuo browser ha richiesto prima di essere riscritto. Per lo meno è possibile acquisire le richieste GET seguendo lo stream TCP con uno strumento come wireshark.

Sai dove ti ha inviato la regola di reindirizzamento; ad es., la posizione è ora visualizzata nel tuo browser web. Se hai accesso ai log di apache dal lato del server web, vedrai qualcosa di simile:

127.0.0.1 - - [2/Feb/2012:12:36:17 -0400] "GET /old.html HTTP/1.0" 301 315 "-" "Mozilla/5.0"
127.0.0.1 - - [2/Feb/2012:12:36:17 -0400] "GET /descriptive-directory/new.html HTTP/1.0" 200 1702 "-" "Mozilla/5.0"

anche se potresti facilmente visualizzare la configurazione di Apache per trovare le regole di riscrittura effettive.

Nota: nessuno di questi ha nulla a che fare con dove il contenuto è memorizzato sul server web. Potrebbe non esserci alcuna directory chiamata descriptive-directory o file chiamati new.html o old.html sul server web. L'intera risposta http da una richiesta a http://www.example.com/descriptive-directory/new.html potrebbe essere presa dal server Web e quindi restituire una pagina html scritta in modo dinamico. Ad esempio, il seguente semplice codice webpy può essere eseguito per fungere da server Web senza che esistano file html.

# call this file silly_website.py
import web
urls = (
    '/descriptive-directory/new.html', 'new',
    )
class new(object):
    def GET(self):
        return "<html><head><title>Hello</title></head><body>World! from new</body></html>"

app = web.application(urls, globals())
if __name__ == '__main__': 
    app.run()

che potrebbe quindi essere eseguito come python silly_website.py [your_ip] e si dispone di un server Web in esecuzione che restituirà una pagina Web molto semplice per una richiesta a /descriptive-directory/new.html . Pertanto non esiste un modo generico per scoprire dove il contenuto restituito dal server Web è effettivamente memorizzato sul server web (anche in relazione alla directory root del server web).

    
risposta data 02.02.2012 - 19:03
fonte

Leggi altre domande sui tag