Un exemple de code de référent forgé est principalement utilisé pour percer l'anti-sangsue.
Voici le programme complet. Vous pouvez le modifier vous-même pour des applications spécifiques.
L'exemple que je donne ici est très simple. En fait, de nombreuses applications peuvent être développées à partir de cet exemple. Par exemple, masquer la véritable adresse URL... Héhé, analysez-la simplement vous-même et créez un nouveau fichier file.php ici. Le paramètre suivant est l'adresse cible du référent qui doit être falsifiée. Par exemple : file.php/http://www.xxx.xxx/xxx.mp3
<?
$url=str_replace('/file.php/','',$_SERVER["REQUEST_URI"]);//Obtenir l'URL qui doit être convertie. Je suis paresseux ici et je ne ferai pas le contrôle de sécurité, je l'ajouterai moi-même si nécessaire.
$downfile=str_replace(" ","%20",$url);//Remplacez les espaces et autres, vous pouvez les remplacer en fonction de la situation réelle
$downfile=str_replace(" http://","",$downfile);// Supprimer http://
$urlarr=explode("/",$downfile);//Utilisez "/" pour décomposer le nom de domaine
$domain=$urlarr[0];//Nom de domaine
$getfile=str_replace($urlarr[0],'',$downfile);//Récupérer la partie GET dans l'en-tête
$content = @fsockopen("$domain", 80, $errno, $errstr, 12);//Connectez-vous à l'hôte cible
if ($content){//Si le lien ne peut pas être téléchargé, une erreur s'affichera
die("Désolé, impossible de se connecter à $domain.");
}
fputs($content, "GET $getfile HTTP/1.0rn");
fputs($content, "Hôte : $domainrn");
fputs($content, "Référent : $domainrn");//Pièce forgée
fputs($content, "User-Agent : Mozilla/4.0 (compatible ; MSIE 6.0 ; Windows NT 5.1)rnrn");
tandis que (!feof($content)) {
$tp.=fgets($content, 128);
if (strstr($tp,"200 OK")){ //Quelques explications devraient être données ici. La première ligne de l'en-tête correspond généralement au statut du fichier demandé. Pour plus de détails, veuillez vous référer aux codes d'état HTTP 1.1 et à leur signification hi.baidu.com/110911/blog/item/21f20d2475af812ed50742c5.html Il s'agit de l'état normal de la demande de fichier, redirigez-le simplement directement. Poursuivre l’exécution des programmes dans d’autres États
header("Emplacement :$url");
mourir();
}
}
//Redirection 302, la plupart des systèmes anti-hotlink déterminent d'abord le référent, puis redirigent vers la véritable adresse si elle est correcte. Ce qui suit est d'obtenir la véritable adresse.
$arr=exploser("n",$tp);
$arr1=explode("Location: ",$tp);//Extraire la véritable adresse derrière Location
$arr2=exploser("n",$arr1[1]);
header('Content-Type:application/force-download');//Forcer le téléchargement
header("location:".$arr2[0]);//Redirection vers l'adresse cible
mourir();
?>
Ce programme ne peut être utilisé que pour le système anti-hotlinking qui utilise le référent pour déterminer s'il s'agit d'un hotlinking. Si d'autres méthodes spéciales sont utilisées pour empêcher le hotlinking, cette estimation ne sera pas applicable.