Pregunta

Soy dueño de un sitio web que contiene una gran cantidad de material gratuito para descargar en él. El problema que estoy enfrentando es que la gente de todo el mundo están tomando los enlaces directos de los archivos (por ejemplo, archivos .zip) y publicarlos en sus sitios web y foros en general. Estoy recibiendo una enorme cantidad de ancho de banda y eso está bien, pero el número de páginas visitadas es baja. ¿Hay una manera o un script que puedo añadir a los enlaces, de modo que cuando alguien presiona en el enlace de un sitio web ajeno, una página de mi sitio web se abre en cambio, que a su vez le permite descargar el archivo para que pueda obtener más visitas.

Por ejemplo, esta es una dirección de mi página web:

  

http://sy-stu.org/stu/PublicFiles/StdLibrary/ Exam.zip

Cuando alguien presiona sobre ella, se iniciará el proceso de descarga directa.

¿Fue útil?

Solución

Si está usando PHP, puede tener un script que enlaza al usuario de la descarga, pero sólo si el $_SERVER['HTTP_REFERER'] es desde su sitio. Si no es redirigir a su sitio.

Otros consejos

Su sitio está alojado en un servidor web Apache, por lo que debe ser capaz de hacer lo siguiente en httpd.conf de su sitio (o virtual bloqueo de host)

RewriteEngine On
RewriteCond   %{HTTP_REFERER} !^$
RewriteCond   %{HTTP_REFERER} !^http://(www\.)?yourdomain\.com/  [NC]
RewriteRule   ^/PublicFiles/  /page-about-direct-links.html

Eso es básicamente diciendo:

  1. Hacer girar el motor en mod_rewrite
  2. Si el Referente HTTP no está en blanco ...
  3. Y no contiene mi nombre de dominio (con o sin “www.”) ...
  4. desviar todas las peticiones para cualquier cosa bajo / PublicFiles / a /page-about-direct-links.html

Más información sobre mod_rewrite se puede encontrar aquí: mod_rewrite - Apache HTTP Server

No proporcione un enlace directo al archivo que está sirviendo. Proporcionar una secuencia de comandos que envía el contenido a través de la escritura, una vez que se pulsa el botón de enviar.

Hacer una búsqueda en Internet para el envío de archivos a través de CGI.

Aquí hay un enlace ordenada he encontrado en Internet: aquí

¿Por qué no hacer que los enlaces dinámicos e indirecta, por ejemplo:

en la página X: (estática)

<a href="Y">SuperNeat Program</a>

en la página Y: (generado dinámicamente)

Click here to download 
<a href="Z.php?timestamp={timestamp}&counter={counter}&hash={hash}">
SuperNeat Program</a>

y vuelva a colocar marca de tiempo w / la hora actual en milisegundos desde el año 1970, contador = un contador que incrementas una vez por cada descarga, el hash = hash MD5 de concatenar (marca de tiempo, contador, sal secreto) donde la sal secreta = cualquier código favorita a mantener secreto.

A continuación, en la página z.php, que acaba de volver a calcular el hash del mostrador y marca de tiempo en la cadena de consulta, compruebe que coincide con el hash de la cadena de consulta, y que la marca de tiempo es reciente (por ejemplo, a partir de los 30 minutos anteriores o 60 minutos o lo que sea). Si es así, entonces servir el archivo en cuestión. Si no lo es, lanzar un mensaje de error. Esto le da a alguien sólo un breve período de tiempo para el enlace directo a su archivo. Si no quiero ni que, a continuación, realizar un seguimiento de los valores de los contadores recibidos en la cadena de consulta z.php y no los acepte más de una vez.

No estoy en absoluto un experto en web, pero yo estaba pensando en el siguiente puntero -

si está utilizando asp.net podría http controladores o módulos configurados en el nivel de ayuda sitio web (mucho de la información sobre las personas en la web, lo busqué recientemente para un trabajo, aquí está uno artículo por ejemplo

La idea es interceptar la solicitud antes de que llegue el archivo de destino y redirigirlo a la página que desea mostrar; por ejemplo - si alguien desea explorar la URL que has enviado ( " http : //sy-stu.org/stu/PublicFiles/StdLibrary/Exam.zip ") interceptar esta llamada, utilizar algunos de búsqueda para encontrar la página que desea visualizar y redirigir la solicitud no; estoy adivinando usuarios siguiendo un enlace no será demasiado molesto (a menos que hayan hecho "guardar destino como", lo que daría lugar a ahorrar algo de HTML y no postal).

Sin embargo, hay algo de "agujero" en mi plan - cómo es lo que realmente proporciona un enlace que trabaja desde su propia página? Creo que se puede diferenciar entre solicitudes procedentes de su sitio Web, y las procedentes de otros, que se puede comprobar en el controlador / módulo mediante el examen de la solicitud objeto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top