一个乐于分享的博客
关注互联网折腾服务器分享码农的日常

关于91视频解析的一些说明

关于91视频解析的一些说明

熟悉这个页面的老司机就无需多言,不熟悉的请移步GitHub:91pornMobile(91`P-o~r_n手机版,完全无广告,无多余信息,突破游客每天只能看10次的限制。)。

由于项目主页上留了博客地址,所以很多从GitHub来的小伙伴都会搜索一下“91”或者翻找一下关于该项目的介绍。搜索不到,乃们心里肯定会很失落啊,所以我现在补上这篇文章。

套用快播王欣的一句话:技术本身是无罪的!所以希望大家撸过之后能好好看一看代码,学好知识本领大啊!

为什么现在才写

博主打算做一个正经的技术交流网站啊!

我的网站托管在国内腾讯云,也是备过案的啊!!

污七八糟的东西是要和谐的啊!!!

博主胆小也不敢放啊!!!!

关于本项目

我忘了当时为啥要做这么个东西,可能连脑子一热的过程就没有,然后就开始写了。

博主甚至没学过PHP,只会一点简单的C#知识,因为手头有Linux环境,所以只能用PHP实现。由于要抓取页面内容,博主还学习了PHP的采集知识

等项目几乎做完了,又发现原来目标网站限制游客每天只能访问10次。

最一开始想到的是代理服务器,通过切换代理突破限制,并且把代理获取到的视频地址缓存起来,供下次直接访问。

后来发现很难找到大量稳定的代理地址,就顺便研究了伪造HTTP头信息以不同的IP地址访问目标网站,到这总算是能比较顺畅的使用了。

开源态度

博主做这个项目也是把学到的东西做一个整合,形成真实可用的项目。

学会了解决问题的思路,就可以解决同类型的其他问题,这也是我项目开源,让更多人学习的意义。

但是开源并不等于滥用,所以转载的务必注明出处,让更多人了解到项目源码。

一些忠告

根据《中华为民共和国XX法》第XX条XX号规定,传播淫秽色情内容是非法的。

所以下载了代码自己部署的朋友请不要触犯国家法律。

更新日志

2018-06-15:经@唯一度博客提醒,修改了缩略图地址,显示图片为高清图。修复播放器不能快进的问题。

2018-06-10:墙内地址显示不了缩略图,增加了图片代理。

转载务必注明出处:岩兔站 » 关于91视频解析的一些说明
赞 (13) or 打赏

讨论区 20

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #9

    跑不起来了么= =。老报错

    Notice: The received content is empty!

    唯一4周前 (07-25)回复
    • Notice可以忽略,放国外服务器试试

      岩兔站4周前 (07-26)回复
  2. #8

    thumb/1_269085.jpg,把 1_这个参数去掉,变成thumb/269085.jpg,图片会变大哦。还有2_,3_

    唯一度博客2个月前 (06-14)回复
  3. #7

    怎么变乱码了。。。?

    phper3个月前 (05-22)回复
    • 代码太多了,留言区好像不太支持。
      我在后台看了看代码,但楼主也是新手,也看不太懂……
      如果是想爬视频的话,用python实现感觉更适合一些,GitHub也有很多现成的项目,推荐一个https://github.com/eqblog/91_porn_spider

      岩兔站3个月前 (05-22)回复
      • python需要安装第三方库,麻烦。。。其实以前我也写python代码。。。

        phper3个月前 (05-23)回复
  4. #6

    刚才写了个自动爬的。。。ORZ。。。

    phper3个月前 (05-22)回复
  5. #5

    loadHTML($txt);

    $xpath = new DomXpath($dom);
    $listchannels = $xpath->query(‘//*[@class=”listchannel”]’);

    $vurls = [];
    for ($i = 0; $i length; $i++) {
    $listchannel = $listchannels->item($i);
    $hrefs = $listchannel->getElementsByTagName(‘a’);
    for ($j = 0; $j length; $j++) {
    $href = $hrefs->item($j);
    if ($href->hasAttribute(‘title’)) {
    $vurls[] = $href->getAttribute(‘href’);
    break;
    }
    }
    }
    return $vurls;
    }

    function tool_fetch_video_and_thumb($url, $base)
    {
    $txt = tool_page_fetch($url, $base);
    $dom = new DOMDocument();
    @$dom->loadHTML($txt);

    $xpath = new DomXpath($dom);
    $titles = $xpath->query(‘//*[@id=”viewvideo-title”]’);
    $videos = $xpath->query(‘//*[@id=”vid”]’);
    $sources = $dom->getElementsByTagName(‘source’);

    $title = trim($titles->item(0)->textContent);
    $thumb = $videos->item(0)->getAttribute(‘poster’);
    $source = $sources->item(0)->getAttribute(‘src’);

    tool_log(‘—————————————————————-‘);
    tool_log(‘title : ‘ . $title);
    tool_log(‘url : ‘ . $url);
    tool_log(‘thumb : ‘ . $thumb);
    tool_log(‘video : ‘ . $source);

    $thumb_ext = pathinfo($thumb, PATHINFO_EXTENSION);
    $source_ext = pathinfo(substr($source, 0, strpos($source, ‘?’)), PATHINFO_EXTENSION);

    $path = __DIR__ . ‘/videos/’ . $title;

    if (is_dir($path)) {
    tool_log(‘skip…’);
    return;
    }
    @mkdir($path);

    for ($i = 0; $i <= 10; $i++) {
    $thumb_data = tool_data_fetch($thumb, $url);
    if (!empty($thumb_data)) {
    file_put_contents($path . '/poster.' . $thumb_ext, $thumb_data);
    break;
    }
    }
    $ip = tool_random_ip();
    $cmd = 'axel -n 20 -o "' . ($path . '/video.' . $source_ext) . '" "' . $source . '"'
    . ' -U "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4"'
    . ' -H "Referer: ' . $url . '"'
    . ' -H "CLIENT-IP:' . $ip . '"'
    . ' -H "X-FORWARDED-FOR:' . $ip . '"';
    exec($cmd);
    }

    function main($argc, $argv)
    {
    $msg = '使用方法: php ' . pathinfo(__FILE__, PATHINFO_BASENAME) . ' 主地址如https://www.baidu.com/';
    if ($argc < 2) {
    tool_log("参数错误!\n" . $msg);
    return;
    }
    $base = $argv[1];

    @mkdir(__DIR__ . '/videos');

    for ($p = 1; $p <= 50; $p++) {
    $vurls = tool_fetch_page($base, $p);
    foreach ($vurls as $vurl) {
    tool_fetch_video_and_thumb($vurl, $base);
    }
    }
    }

    main($argc, $argv);

    phper3个月前 (05-22)回复
  6. #4

    大驾是在国外么?感觉还是作死呢?

    phper3个月前 (05-22)回复
    • 额,我也感觉在作死……有点害怕

      岩兔站3个月前 (05-22)回复
      • 我这个自动爬的,纯属学习类型的。。。不带任何XXX。。。。

        phper3个月前 (05-22)回复
      • 排版有问题?

        phper3个月前 (05-22)回复
      • 在php-cli下工作的,但是需要axel工具。。。php直接download,不晓得为啥不行。。。ORZ。。。

        phper3个月前 (05-22)回复
  7. #3

    我是部署在国外服务器的,但不能直接打开,list.php打不开不全

    狮子4个月前 (04-19)回复
    • 试试用https访问,好多稀奇古怪的问题都能通过https解决。

      岩兔站4个月前 (04-20)回复
  8. #2

    代理服务器怎么设啊?阉割了?

    狮子4个月前 (04-19)回复
    • 代理最初为了伪造IP,但一直没找到稳定的代理列表,所以放弃了

      岩兔站4个月前 (04-20)回复
  9. #1

    如果是国内服务器如何操作呢?

    14个月前 (04-17)回复
    • 用免番地址可以,国内注意遵守国家法律

      岩兔站4个月前 (04-17)回复