zoukankan      html  css  js  c++  java
  • 2017最新教程--如何下载美拍视频

    需求:

    最近有某朋友需要下载美拍视频并提取视频当中的音频。地址为http://www.meipai.com/media/457569009。

    方法:

    第一次看美拍的视频,网上搜索一下,发现有一些方法说看源代码中,可以看到视频地址。

    打开分析后发现视频地址,发现url并不是直观的url,以前的方法已经不能使用了。

    地址为:8141aHR0chDovL212dmlkZW8xMS5tZWl0dWRhdGEuY29tLzU2OGI3NzQyODc2MzY2MTQ4Lm1w8vwYNA==

    判定为base64加密,对数据进行解密

    发现解密后完全不认识,但是能看到htt的字样,那说明在base64的过程中还做了其他的处理(可能进行了移位等操作)

    此时不能放弃,我们多次请求该网页后,发现url的base64值是不同的,这里应该就是对url在base64编码之前进行了某种移位的操作(猜测,具体没有去验证)。

    多次请求后,发现如下

    可以看到解码后的url为较正常的,我们尝试一下mvvideo11.meitudata.com/568b7742876366148.mp4

    确实就是视频的真实地址,丢到下载器里面下载即可。

    脚本:

     lcamry格言:手工超过三分钟的活就要脚本自动化实现。

    #!/usr/bin
    #-*- coding: utf-8 -*-
    #DATA:2017年5月20日
    #AUTHOR:lcamry
    #blog:http://www.cnblogs.com/lcamry
    #link:
    #qq:646878467
    #usag:python download-meipai-video.py http://www.meipai.com/media/730173228
    import sys,os
    import urllib2
    import base64
    
    try:
        from lxml import html
    except ImportError:
        raise SystemExit("lxml module is wrong,please execute:pip install lxml")
    class submain():
        def __init__(self,submain):
            self.submain = submain
            self.sublist = []
        def get_sourceurl(self):
            for i in range(0,20):
                scan_data = urllib2.urlopen(self.submain).read()
                html_data = html.fromstring(scan_data)
                submains = html_data.xpath("//span//@data-video")
                self.sublist.extend(submains)
     #       print self.sublist
        def scan_domain(self):
            self.get_sourceurl()
            return list(set(self.sublist))
    if __name__ == '__main__':
        domain = sys.argv[1]
        submain = submain(domain).scan_domain()
        for line in  submain:
            if len(line) % 4 ==0:
                try:
                    print base64.decodestring(line)
                except:
                    continue

    执行结果下:

    从上图可以看到mvvideo11.meitudata.com/568b7742876366148.mp4这个地址就是视频的完整地址,此时我们用浏览器访问一下,视频地址正确。

    notice:

    需要说明的是,我们此处是对URL相当于爆破的,所以在一次执行后,可能没有正确的结果,此时多执行几次,每次返回的结果是不同的,然后自己判断返回的地址中就可以找到正确的地址。

  • 相关阅读:
    BZOJ 2142: 礼物
    八校联考前3场记录
    BZOJ1115:[POI2009]石子游戏Kam (博弈论)
    IE10、IE11解决不能播放Flash的问题!
    ClientAbortException 异常解决办法
    WeX5学习笔记-建立项目且从SVN获取版本
    WeX5学习笔记-创建本地APP相关问题
    android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配
    ERROR 1130 (HY000):Host'localhost'解决方法
    一台机器运行多个JBoss 4.2.3多实例,或多个同一版
  • 原文地址:https://www.cnblogs.com/lcamry/p/6883469.html
Copyright © 2011-2022 走看看