Maison php教程 php手册 PHP嗅探youku视频的真实flv文件地址!

PHP嗅探youku视频的真实flv文件地址!

May 25, 2016 pm 04:44 PM
explode foreach iconv preg_match substr

认识几个做视频网站的站长他们的视频电影都是来自于我们国内的几大视频网站了,有一站长要我帮助它做一个可以自动测试出youku视频网站的flv真实地址,下面我整理了一下午解决了此问题非常的不错,大家可参考一下。

这个是借力打力,只是抓去朋友网的内容!!!

不过相当好用哦!

看代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<?php

$videourl = &#39;http://v.youku.com/v_show/id_XMjA5MjQ0OTQ0.html&#39;;

function get_content($url, $data) {

    if (is_array($data)) {

        $data = http_build_query($data, &#39;&#39;, &#39;&&#39;);

    }

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_setopt($ch, CURLOPT_POST, 1);

    curl_setopt($ch, CURLOPT_HEADER, 0);

    curl_setopt($ch, CURLOPT_URL, $url);

    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

    $result = curl_exec($ch);

    return $result;

}

$str = get_content(&#39;http://share.pengyou.com/json.php?mod=usershare&act=geturlinfo&#39;, array(

    &#39;url&#39; => $videourl

));

$str = json_decode($str);

var_dump($str);

?>

Copier après la connexion

这个测试出来的只是swf文件并不是我们要的flv文件了,后来参考一站长的写法进行了改进

核心代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

<?php

function fetch_youku_flv($url) {

    preg_match("#id_(.*?).html#", $url, $out);

    $id = $out[1];

    $content = get_curl_contents(&#39;http://v.youku.com/player/getPlayList/VideoIDS/&#39; . $id);

    $data = json_decode($content);

    foreach ($data->data[0]->streamfileids AS $k => $v) {

        $sid = getSid();

        $fileid = getfileid($v, $data->data[0]->seed);

        $one = ($data->data[0]->segs->$k);

        if ($k == &#39;flv&#39; || $k == &#39;mp4&#39;) return "http://f.youku.com/player/getFlvPath/sid/{$sid}_00/st/{$k}/fileid/{$fileid}?K={$one[0]->k}";

        continue;

    }

}

function get_curl_contents($url, $second = 5) {

    if (!function_exists(&#39;curl_init&#39;)) die(&#39;php.ini未开启php_curl.dll&#39;);

    $c = curl_init();

    curl_setopt($c, CURLOPT_URL, $url);

    $UserAgent = $_SERVER[&#39;HTTP_USER_AGENT&#39;];

    curl_setopt($c, CURLOPT_USERAGENT, $UserAgent);

    curl_setopt($c, CURLOPT_HEADER, 0);

    curl_setopt($c, CURLOPT_TIMEOUT, $second);

    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);

    $cnt = curl_exec($c);

    $cnt = mb_check_encoding($cnt, &#39;utf-8&#39;) ? iconv(&#39;gbk&#39;, &#39;utf-8//IGNORE&#39;, $cnt) : $cnt; //字符编码转换

    curl_close($c);

    return $cnt;

}

function getSid() {

    $sid = time() . (rand(0, 9000) + 10000);

    return $sid;

}

function getkey($key1, $key2) {

    $a = hexdec($key1);

    $b = $a ^ 0xA55AA5A5;

    $b = dechex($b);

    return $key2 . $b;

}

function getfileid($fileId, $seed) {

    $mixed = getMixString($seed);

    $ids = explode("*", $fileId);

    unset($ids[count($ids) - 1]);

    $realId = "";

    for ($i = 0; $i < count($ids); ++$i) {

        $idx = $ids[$i];

        $realId.= substr($mixed, $idx, 1);

    }

    return $realId;

}

function getMixString($seed) {

    $mixed = "";

    $source = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/:._-1234567890";

    $len = strlen($source);

    for ($i = 0; $i < $len; ++$i) {

        $seed = ($seed * 211 + 30031) % 65536;

        $index = ($seed / 65536 * strlen($source));

        $c = substr($source, $index, 1);

        $mixed.= $c;

        $source = str_replace($c, "", $source);

    }

    return $mixed;

}

?>

Copier après la connexion

调用方法:

1

2

3

4

<?php

$url = &#39;http://v.youku.com/v_show/id_XMzg2OTQ3MjQw.html&#39;;

echo fetch_youku_flv($url);

?>

Copier après la connexion

访问: http://xiaomizhou.net/demo/flv.php?url=http://v.youku.com/v_show/id_XMzg2OTQ3MjQw.html

输出的结果是:http://f.youku.com/player/getFlvPath/sid/138035737110468_00/st/flv/fileid/03000201004F97EF4A2E350467A09DB266E872-5522-225F-DC45-40B4E1F9BE49?K=c2a4327df2bb5a65261d40ea

这个是可以直接下载的!!


教程链接:

随意转载~但请保留教程地址★

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est la différence entre utiliser foreach et iterator pour supprimer des éléments lors de la traversée de Java ArrayList ? Quelle est la différence entre utiliser foreach et iterator pour supprimer des éléments lors de la traversée de Java ArrayList ? Apr 27, 2023 pm 03:40 PM

1. La différence entre Iterator et foreach est la différence polymorphe (la couche inférieure de foreach est Iterator). Iterator est un type d'interface, et il ne se soucie pas du type de collection ou de tableau ; de la collection en premier, et même le type d'éléments dans la collection ; 1. Pourquoi dit-on que la couche inférieure de foreach est le code écrit par Iterator : Code décompilé : 2. La différence entre supprimer dans foreach et iterator. dans le manuel de développement Java d'Alibaba, mais aucune erreur ne sera signalée dans le cas 1, et une erreur sera signalée dans le cas 2 (java. util.ConcurrentModificationException) en premier

Comment déterminer le nombre de boucles foreach en php Comment déterminer le nombre de boucles foreach en php Jul 10, 2023 pm 02:18 PM

​Les étapes permettant à PHP de déterminer le numéro de la boucle foreach : 1. Créez un tableau de "$fruits" ; 2. Créez une variable de compteur "$counter" avec une valeur initiale de 0. 3. Utilisez "foreach" pour boucler. à travers le tableau, et augmentez la valeur de la variable compteur dans le corps de la boucle, puis affichez chaque élément et son index ; 4. Affichez la valeur de la variable compteur en dehors de la boucle "foreach" pour confirmer quel élément atteint la boucle.

Fonctions essentielles recommandées pour le traitement chinois : explication détaillée de la fonction PHP iconv Fonctions essentielles recommandées pour le traitement chinois : explication détaillée de la fonction PHP iconv Jun 27, 2023 pm 02:04 PM

Lors du traitement de texte, il est courant de convertir des chaînes dans différents formats de codage. La fonction iconv (InternationalizationConversion) fournie dans le langage PHP peut répondre à ce besoin très facilement. Cet article présentera en détail l'utilisation de la fonction iconv sous les aspects suivants : Définition de la fonction iconv et introduction aux paramètres communs Exemple de démonstration : Convertir une chaîne codée GBK en chaîne codée UTF-8 Exemple de démonstration : Convertir UTF

PHP renvoie un tableau avec les valeurs clés inversées PHP renvoie un tableau avec les valeurs clés inversées Mar 21, 2024 pm 02:10 PM

Cet article expliquera en détail comment PHP renvoie un tableau après avoir inversé la valeur de la clé. L'éditeur pense que c'est assez pratique, je le partage donc avec vous comme référence. J'espère que vous pourrez gagner quelque chose après avoir lu cet article. PHP Key Value Flip Array Key Value Flip est une opération sur un tableau qui échange les clés et les valeurs du tableau pour générer un nouveau tableau avec la clé d'origine comme valeur et la valeur d'origine comme clé. Méthode d'implémentation En PHP, vous pouvez effectuer un retournement clé-valeur d'un tableau via les méthodes suivantes : Fonction array_flip() : La fonction array_flip() est spécialement utilisée pour les opérations de retournement clé-valeur. Il reçoit un tableau en argument et renvoie un nouveau tableau avec les clés et les valeurs échangées. $original_array=[

Comment utiliser la fonction d'explosion PHP et résoudre les erreurs Comment utiliser la fonction d'explosion PHP et résoudre les erreurs Mar 10, 2024 am 09:18 AM

La fonction d'explosion en PHP est une fonction utilisée pour diviser une chaîne en un tableau. Elle est très courante et flexible. Lors du processus d'utilisation de la fonction d'éclatement, nous rencontrons souvent des erreurs et des problèmes. Cet article présentera l'utilisation de base de la fonction d'éclatement et fournira quelques méthodes pour résoudre les rapports d'erreurs. 1. Utilisation de base de la fonction exploser En PHP, la syntaxe de base de la fonction exploser est la suivante : éclater(string$separator,string$stri

Introduction à la commande iconv sous CentOS Introduction à la commande iconv sous CentOS Dec 29, 2023 pm 07:52 PM

iconv-fencoding[-tencoding][inputfile]...[Fonction] Convertit le contenu d'un fichier donné d'un encodage à un autre. [Description]-fencoding : Convertit les caractères de l'encodage en encodage. -tencoding : convertit les caractères en codage. -l : répertorie l'ensemble connu de caractères codés -ofile : spécifie le fichier de sortie -c : ignore les caractères illégaux dans la sortie -s : supprime les messages d'avertissement, mais pas les messages d'erreur --verbose : affiche les informations de progression -f et -t peuvent Les caractères légaux spécifiés sont répertoriés dans la commande avec l'option -l. [Exemple]* Liste des encodages de caractères actuellement pris en charge

Divisez et fusionnez des chaînes à l'aide des fonctions d'explosion et d'implosion Divisez et fusionnez des chaînes à l'aide des fonctions d'explosion et d'implosion Jun 15, 2023 pm 08:42 PM

En programmation PHP, le traitement des chaînes est une opération fréquemment requise. Parmi eux, le fractionnement et la fusion de chaînes sont deux exigences courantes. Afin d'effectuer ces opérations plus facilement, PHP propose deux fonctions très pratiques, à savoir les fonctions d'explosion et d'implosion. Cet article présentera l'utilisation de ces deux fonctions, ainsi que quelques compétences pratiques. 1. La fonction exploser La fonction exploser est utilisée pour diviser une chaîne selon le délimiteur spécifié et renvoyer un tableau. Son prototype de fonction est le suivant : arra

PHP renvoie la valeur ASCII du premier caractère de la chaîne PHP renvoie la valeur ASCII du premier caractère de la chaîne Mar 21, 2024 am 11:01 AM

Cet article expliquera en détail la valeur ASCII du premier caractère de la chaîne renvoyée par PHP. L'éditeur pense que c'est très pratique, je la partage donc avec vous comme référence, j'espère que vous pourrez gagner quelque chose après avoir lu cet article. PHP renvoie la valeur ASCII du premier caractère d'une chaîne Introduction En PHP, obtenir la valeur ASCII du premier caractère d'une chaîne est une opération courante qui implique des connaissances de base sur le traitement des chaînes et l'encodage des caractères. Les valeurs ASCII sont utilisées pour représenter la valeur numérique des caractères dans les systèmes informatiques et sont essentielles à la comparaison des caractères, à la transmission et au stockage des données. Le processus d'obtention de la valeur ASCII du premier caractère d'une chaîne implique les étapes suivantes : Obtenir la chaîne : Déterminez la chaîne pour laquelle vous souhaitez obtenir la valeur ASCII. Il peut s'agir d'une variable ou d'une constante chaîne

See all articles