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相当于爆破的,所以在一次执行后,可能没有正确的结果,此时多执行几次,每次返回的结果是不同的,然后自己判断返回的地址中就可以找到正确的地址。

 

posted @ 2017-05-20 22:43 lcamry 阅读(...) 评论(...) 编辑 收藏