Afficher un doc avec l'IP du visiteur et non du serveur

Eléphant du PHP | 103 Messages

19 févr. 2015, 16:40

Bonjour,

J'ai ce code qui affiche le code source d'une page. Dans cette page, il y a un lien M3U8. Démo : http://forum-racacax.byethost7.com/PHP/ ... efille.php . Ce lien a un token qui se régénère souvent et est propre à chaque IP. Du coup, dans le lien Démo, le lien M3U8 présent ne fonctionne pas car le token est pour l'IP du serveur. Peux ton me dire comment afficher le code source de cette page avec l'IP de la personne qui y accède ?

Au mieux, comment garder uniquement le lien M3U8 ?

Merci
	
<?php
 
$ch = curl_init();
$timeout = 5; 
curl_setopt ($ch, CURLOPT_URL, 'http://www.stream4free.eu/un-gars-une-fille');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
$lines = array();
$lines = explode("\n", $file_contents);

foreach($lines as $line_num => $line) {
echo "Line # {$line_num} : ".htmlspecialchars($line)."<br />\n";
}
 
?>



Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 févr. 2015, 16:56

Bonjour,

Si le soft du serveur distant qui génère le token est bien conçu, ce que tu veux faire n'est pas possible car il va attribuer un token uniquement valable pour l'IP qui fait la demande.

Si il est mal conçu, tu peux essayer de te faire passer pour un proxy et fournir en en-tête dans curl les variables HTTP_X_FORWARDED_FOR et X-REAL-IP avec l'IP du véritable utilisateur et voir si à tout hasard le serveur te fournirait des token pour cette IP.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 103 Messages

19 févr. 2015, 17:35

Salut,
J'ai essayé mais non. Cependant, en utilisant un proxy (CybergHost), ça marche : http://forum-racacax.byethost7.com/PHP/ ... efille.php . Il ne reste plus qu'à isoler le m3u8. Il se trouve dans le HTML présenté comme ceci :
<source src="/go/browse.php?u=http%3A%2F%2F195.154.188.161%3A8080%2F[TOKEN]%2Fhls%2Fungarsunefille.m3u8&b=7"
Je vérifie si par hasard, le token reste. Ce serait de la chance. Le lien M3U8 : https://ro-free-proxy.cyberghostvpn.com ... e.m3u8&b=7
<?php

$ch = curl_init();
$timeout = 5; // set to zero for no timeout
curl_setopt ($ch, CURLOPT_URL, 'https://ro-free-proxy.cyberghostvpn.com/go/browse.php?u=http%3A%2F%2Fwww.stream4free.eu%2Fun-gars-une-fille&b=7&f=norefer');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
$lines = array();
$lines = explode("\n", $file_contents);

// display file line by line
foreach($lines as $line_num => $line) {
echo "Line # {$line_num} : ".htmlspecialchars($line)."<br />\n";
}
?>
En parallèle, j'essaye un truc avec Dailymotion : http://cdn-racacax.lescigales.org/n23.php . J'ai eu le token qui est lui aussi propre à chaque IP et géobloqué. Cependant, le lien à l'intérieur n'a pas de token et de géobloquage. Comment afficher directement l'intérieur du lien ?
Voici le code actuellement :
<?php
$json = file_get_contents('http://www.dailymotion.com/json/video/k38A5u07JhRufP4vLxE?fields=stream_live_hls_url');
$feed = current(json_decode($json));
echo '', $feed, '';
?>

Eléphant du PHP | 103 Messages

19 févr. 2015, 19:32

Pour Dalymotion j'ai trouvé le PB. Lors de la redirection, il y a un %26qui est transformé en & et du coup on a le droit à un 403 forbidden. Du coup ça ne marche pas. Est-il possible de changer le &auth en %26auth ? Par un str_replace ? Ou autre fonction ?
<?php
$json = file_get_contents('http://www.dailymotion.com/json/video/k38A5u07JhRufP4vLxE?fields=stream_live_hls_url');
$feed = current(json_decode($json));
echo '<meta http-equiv="refresh" content="0; URL=http://cdn-racacax.lescigales.org/?u=', $feed, '&b=7&f=norefer">';
?>

Eléphant du PHP | 103 Messages

21 févr. 2015, 16:37

Une idée ?

Mammouth du PHP | 688 Messages

21 févr. 2015, 16:48

http://www.dailymotion.com/cdn/live/video/x13p3qi retourne aussi une 403, donc je ne pense pas que cela soit un problème de paramètre.

Eléphant du PHP | 103 Messages

21 févr. 2015, 16:57

Sisi, regarde ce lien http://www.dailymotion.com/json/video/k ... ve_hls_url Récupére l'URL obtenue à l'intérieure et ouvre là avec VLC

Mammouth du PHP | 688 Messages

21 févr. 2015, 17:12

Votre média d'entrée ne peut être ouvert:
VLC ne peut pas ouvrir « http:\/\/www.dailymotion.com\/cdn\/live\/video\/x13p3qi?protocol=hls&auth=1424704146-2562-2vzgyffx-102412269e508a2edaae678a0602849e ». Vérifiez les messages pour plus de détails.
Votre média d'entrée ne peut être ouvert:
VLC ne peut pas ouvrir « http://www.dailymotion.com/cdn/live/vid ... 69281c7163 ». Vérifiez les messages pour plus de détails.
Votre média d'entrée ne peut être ouvert:
VLC ne peut pas ouvrir « http://www.dailymotion.com/cdn/live/vid ... 69281c7163 ». Vérifiez les messages pour plus de détails.

c'est le protocole http qu'il faut utiliser ?

Mammouth du PHP | 688 Messages

21 févr. 2015, 17:27

j'avais mis le bout de code php sur un serveur web, et cela n'a pas fonctionné.
j'ai ouvert dans mon navigateur http://www.dailymotion.com/json/video/k ... ve_hls_url et j'ai ouvert l'url incluse dans le json dans vlc, et là, cela a fonctionné.
le code d'autorisation doit donc verifier l'ip du demandeur.

Eléphant du PHP | 103 Messages

21 févr. 2015, 17:44

C'est pour cela que j'utilise un proxy (voir code un peu plus haut)

Eléphant du PHP | 103 Messages

02 mars 2015, 20:48

Une idée ?