Cómo obtener la URL "real" del sitio (antes de volver a escribirla)

5

Si un sitio utiliza el archivo .htaccess para volver a escribir la URL, por ejemplo. mejor SEO. ¿Es posible averiguar cuál es la URL "real"?

    
pregunta 02.02.2012 - 16:49
fuente

2 respuestas

5

Esto no es posible a menos que conozca la regla de reescritura. En algunos casos, el acceso directo al archivo "real" está totalmente prohibido.

Aparte de eso, puede intentar usar DirBuster con una lista de directorios personalizada, como una lista creada de las urls amistosas seo. Al ser hackers, todos sabemos cómo escribir código, por lo que esto es bastante trivial.

    
respondido por el rook 02.02.2012 - 16:52
fuente
7

No estoy seguro de cuál es tu pregunta. Supongamos que tiene una regla de reescritura simple como para redirigir el contenido de http://www.example.com/old.html a http://www.example.com/descriptive-directory/new.html algo así como:

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

Luego, el navegador web de un usuario envía una solicitud GET http a http://www.example.com para obtener old.html :

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

El servidor web detecta esto en las reglas de reescritura y envía una respuesta http del servidor como:

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

y luego su navegador recupera el contenido que se encuentra en http://www.example.com/descriptive-directory/new.html como si hubiera escrito originalmente la url reescrita.

Entonces, ¿cuál es tu pregunta? Es de suponer que conoce (y puede registrar fácilmente) las direcciones web que su navegador ha estado solicitando antes de que se haya reescrito. Como mínimo, puede capturar las solicitudes GET siguiendo la secuencia TCP con una herramienta como wireshark.

Sabes a dónde te ha enviado la regla de redireccionamiento; por ejemplo, la ubicación ahora se muestra en su navegador web. Si tiene acceso a los registros de apache desde el lado del servidor web, verá algo como:

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"

aunque podría simplemente mirar en la configuración de apache para encontrar las reglas de reescritura reales.

Nota: nada de esto tiene nada que ver con la ubicación del contenido en el servidor web. Puede que no haya ningún directorio llamado descriptive-directory o archivos llamados new.html o old.html en el servidor web. El servidor web podría tomar la respuesta http completa de una solicitud a http://www.example.com/descriptive-directory/new.html y luego devolver una página html escrita dinámicamente. Por ejemplo, el siguiente código simple webpy se puede ejecutar para actuar como servidor web sin que exista ningún archivo 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()

que luego podría ejecutarse como python silly_website.py [your_ip] y tiene un servidor web en ejecución que devolverá una página web muy simple para una solicitud a /descriptive-directory/new.html . Como tal, no hay una forma genérica de averiguar dónde se almacena realmente el contenido devuelto por el servidor web en el servidor web (incluso en relación con el directorio raíz del servidor web).

    
respondido por el dr jimbob 02.02.2012 - 19:03
fuente

Lea otras preguntas en las etiquetas