美拍链接:https://www.meipai.com/

找到视频链接的标签,源代码中没有这个div

通过Fiddler抓包,找到class="mp-h5-player-layer-video"的div由哪个js文件生成的

打开对应的js文件,对其进行断点,找到src生成的方式

发现src参数在这个位置

此时需要找到字符串的来源、再模拟出这个方法

最后发现字符串是一开始就存在于网页中的

在请求网页时,提取出视频对应的字符串,再通过模拟出的方法即可得到URL

import threading
import requests
import base64
import re # 解密video的URL
def Decrypt_video_url(content):
str_start = content[4:] list_temp = []
list_temp.extend(content[:4])
list_temp.reverse()
hex = ''.join(list_temp) dec = str(int(hex, 16))
list_temp1 = []
list_temp1.extend(dec[:2])
pre = list_temp1 list_temp2 = []
list_temp2.extend(dec[2:])
tail = list_temp2 str0 = str_start[:int(pre[0])]
str1 = str_start[int(pre[0]):int(pre[0]) + int(pre[1])] result1 = str0 + str_start[int(pre[0]):].replace(str1, '') tail[0] = len(result1) - int(tail[0]) - int(tail[1]) a = result1[:int(tail[0])]
b = result1[int(tail[0]):int(tail[0]) + int(tail[1])]
c = (a + result1[int(tail[0]):].replace(b, '')) return base64.b64decode(c).decode() # 获取网页的内容
def Page_text(url):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20130331 Firefox/21.0'
}
return requests.get(url, headers=headers).text # 解析单个网页
def Parse_url(video_title, url_tail):
page_url = 'https://www.meipai.com' + url_tail
video_page = Page_text(page_url)
# 获取视频加密后的的URL
data_video = re.findall(r'data-video="(.*?)"', video_page, re.S)[0]
video_url = Decrypt_video_url(data_video)
print("{}\n{}\n{}\n".format(video_title, page_url, video_url)) def Get_url(url):
index_page = Page_text(url)
# 各个视频的标题
videos_title = re.findall(r'class="content-l-p pa" title="(.*?)">', index_page, re.S)
# 各个播放网页的URL
urls = re.findall(r'<div class="layer-black pa"></div>\n\s*<a hidefocus href="(.*?)"', index_page, re.S) t_list = []
for video_title, url_tail in zip(videos_title, urls):
t = threading.Thread(name='GetUrl', target=Parse_url, args=(video_title, url_tail,))
t_list.append(t) for i in t_list:
i.start() if __name__ == '__main__':
Get_url('https://www.meipai.com/')

![](https://img2018.cnblogs.com/blog/821307/201912/821307-20191231153323604-1746369418.png)

获取美拍视频的链接--JS分析的更多相关文章

  1. 获取youku视频下载链接(wireshark抓包分析)

    随便说两句 前两天写了一个python脚本,试图以分析网页源码的方式得到优酷视频的下载地址,结果只得到视频的纯播放地址,下载纯播放地址得到的文件也无法正常播放视频. 这里共享一下播放地址得到的方法(想 ...

  2. base64随机字符混淆加密、解密-美拍视频地址解密,反推加密算法

    用火车头测试采集美拍的数据时无意中发现美拍的视频地址是一段加了混淆字符串的base64代码.如下图 于是好奇之下研究了下解密算法.具体过程省略800字.发现美拍的视频解密是通过js完成,于是找到了具体 ...

  3. Python爬虫个人记录(二) 获取fishc 课件下载链接

    参考: Python爬虫个人记录(一)豆瓣250 (2017.9.6更新,通过cookie模拟登陆方法,已成功实现下载文件功能!!) 一.目的分析 获取http://bbs.fishc.com/for ...

  4. 基于live555的视频直播 DM368IPNC RTSP分析

    因需要,从个人的理解顺序和需求角度对live555的分析与开发整理,包含RTSP Server与RTSP Client.如何直播H.264流与JPEG流等,均进行了探讨,对live555的初学者有一定 ...

  5. 怎样获取HTML5视频的持续时间

    HTML5视频的Bigger体验是非常令人振奋的,非常easy的道理,不用载入和依赖烦人的Flash或其它第三方插件来播放视频,也是大功一件.我们能够通过自己定义控件对视频进行显示和操控,当中一个常见 ...

  6. Rancher 容器管理平台-免费视频培训-链接及内容-第三季

    Rancher 容器管理平台-免费视频培训-链接及内容 第三季 第5期-2018年05月10日-持续集成的容器化实践回放网址:http://www.itdks.com/liveevent/detail ...

  7. Okhttp之RealConnection建立链接简单分析

    在之前的博客中我们知道Okhttp在发起链接请求先从链接池中获取连接,如果链接池中没有链接则创建新的链接RealConnection对象,然后执行其connet方法打开SOCKET链接(详见< ...

  8. ffmpeg转换参数和对几种视频格式的转换分析

    我们在将多种格式的视频转换成flv格式的时候,我们关注的就是转换后的flv视频的品质和大小.下面就自己的实践所得来和大家分享一下,主要针对avi.3gp.mp4和wmv四种格式来进行分析.通常在使用f ...

  9. DirectShow 获取音视频输入设备列表

    开发环境:Win10 + VS2015 本文介绍一个 "获取音频视频输入设备列表" 的示例代码. 效果图 代码下载 代码下载(VC2015):Github - DShow_simp ...

随机推荐

  1. Tomcat,Jboss,Weblogic通过jndi连接数据库

    1.  Tomcat配置Jndi数据源 1.1在tomcat服务器的lib目录下加入数据库连接的驱动jar包 1.2修改tomcat服务器的conf目录下server.xml配置文件 编辑server ...

  2. TD tree体验

    在体验了学长们设计的app后,我颇有感触,我们也可以凭借自己的力量来开发一款软件,虽然它可能并不如市面上相同类型的那么完美,但它对我们的意义却是不一样的. 我是在下午的见面会上看到的这款软件,接待的学 ...

  3. 【MySQL】外键的变种

    " 目录 三种关系 多对一 多对多 一对一 因为有foreign key的约束,使得两张表形成了三种关系: 多对一 多对多 一对多 重点理解如何找出两张表之间的关系 现在有A.B两张表 分析 ...

  4. call深入理解

    function fn1() { console.log(1); } function fn2() { console.log(2); } fn1.call(fn2); // 1 fn1.call.c ...

  5. pillow 初级用法

    # 转载至:https://www.cnblogs.com/apexchu/p/4231041.html Image类 Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种 ...

  6. 正则表达式regex回溯分析

    正则表达式的回溯 现在我们来正式认识一下回溯.以字符串“abbc”为例,正则表达式为“ab{1,3}c”,再匹配的时候,a.b.b,匹配完成,这时候,正则表达式会继续用c和b进行比较,发现不符合,这时 ...

  7. GRE Over IPSec配置

    路由器GRE over IPSec站点到站点VPN         问题分析:对于前面的经典的IPSec VPN的配置来说,兼容性较好,适合于多厂商操作的时候,但是这种经典的配置方式不适合在复杂的网路 ...

  8. cocoapods diff: /../Podfile.lock: No such file or directory 解决方案

    在运行之前的使用 CocoaPods 工程时,有时会报错:diff: /../Podfile.lock: No such file or directory diff: /Manifest.lock: ...

  9. 操作系统OS,Python - 多进程(multiprocessing)、多线程(multithreading)

    多进程(multiprocessing) 参考: https://docs.python.org/3.6/library/multiprocessing.html 1. 多进程概念 multiproc ...

  10. 已知空间两点组成的直线求线上某点的Z值

    已知空间两点组成的直线求线上某点的Z值,为什么会有这种看起来比较奇怪的求值需求呢?因为真正三维空间的几何计算是比较麻烦的,很多时候需要投影到二维,再反推到三维空间上去. 复习下空间直线方程:已知空间上 ...