Domanda

I possedere un sito web che contengono un sacco di roba freeware per scaricare su di esso. Il problema che sto affrontando è che la gente di tutto il mondo stanno prendendo i link diretti dei file (ad esempio file .zip) e pubblicandoli sui loro siti web e forum generali. Sto ricevendo una grande quantità di larghezza di banda e che è ok, ma il numero di pagine visitate è basso. C'è un modo o in uno script che posso aggiungere ai link, in modo che quando qualcuno preme il link da un sito web straniero, una pagina dal mio sito web si apre, invece, che poi gli permette di scaricare il file in modo da poter ottenere più visite.

Per esempio, questo è un indirizzo dal mio sito:

  

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

Quando qualcuno preme su di esso, inizierà direttamente il processo di download.

È stato utile?

Soluzione

Se si sta utilizzando PHP, è possibile avere uno script che collega l'utente al download, ma solo se il $_SERVER['HTTP_REFERER'] è dal tuo sito. Se non è reindirizzare al tuo sito.

Altri suggerimenti

Il tuo sito è ospitato da un server web Apache, così si dovrebbe essere in grado di effettuare le seguenti operazioni in httpd.conf del vostro sito (o virtuale blocco host)

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

Questo è fondamentalmente dicendo:

  1. Ruotare il motore mod_rewrite su
  2. Se il referrer HTTP non è vuoto ...
  3. E non contiene il mio nome a dominio (con o senza “www.”) ...
  4. reindirizzare eventuali richieste di qualsiasi cosa sotto / PublicFiles / a /page-about-direct-links.html

Maggiori informazioni sul mod_rewrite può essere trovato qui: mod_rewrite - Apache HTTP Server

Non fornire un link al file che si sta servendo. Fornire uno script che invia il contenuto attraverso lo script, una volta che si preme il pulsante di invio.

Fate una ricerca sul web per l'invio di file tramite CGI.

Questo è il link ordinata che ho trovato on-line: qui

Perché non basta fare i link dinamici e indiretta, per esempio:

a pagina X: (statico)

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

a pagina Y: (generato dinamicamente)

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

e sostituire timestamp w / l'ora corrente in millisecondi dal 1970, counter = un contatore che si incrementa una volta per ogni download, hash = MD5 hash di concatenate (timestamp, contatore, sale segreto) dove il sale segreto = alcun codice preferito si mantiene segreto.

Poi a pagina Z.php, basta ricalcolare l'hash dal bancone e timestamp nella stringa di query, verificare che corrisponda l'hash nella stringa di query, e che il timestamp è recente (ad esempio, dai precedenti 30 minuti o 60 minuti o qualsiasi altra cosa). Se lo è, quindi servire il file in questione. Se non lo è, lanciare un messaggio di errore. Questo dà a qualcuno solo per un breve periodo di tempo per direct-link al tuo file. Se non voglio nemmeno che, quindi tenere traccia dei valori del contatore ricevuti nella stringa di query Z.php e non accettano più di una volta.

Io non sono affatto un esperto di web, ma stavo pensando al seguente puntatore -

se si sta utilizzando asp.net potrebbe http gestori o moduli configurati a livello di aiuto sito web (lotto di informazioni su quelli sul web, ho guardato di recente per alcuni lavori, ecco uno articolo ad esempio

L'idea è quella di intercettare la richiesta prima che raggiunga il file di destinazione e destinarli alla pagina che si desidera mostrare; per esempio - se qualcuno vuole accedere all'URL che hai postato ( " http : //sy-stu.org/stu/PublicFiles/StdLibrary/Exam.zip ") intercetta questa chiamata, utilizzare alcuni di ricerca per trovare la pagina che si desidera visualizzare e reindirizzare la richiesta c'è, io sono utenti indovinando a seguito di un link non sarà troppo infastiditi (a meno che non hanno fatto "salva oggetto con nome", il che porterebbe loro risparmiare qualche HTML e non ZIP).

Tuttavia, c'è qualche "buco" nel mio piano - come si fa effettivamente fornire un link che funziona dalla propria pagina? Io credo che si possa distinguere tra le richieste provenienti dal tuo sito web e quelli provenienti da altri che si potrebbe verificare in / modulo di gestore esaminando l'oggetto di richiesta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top