咨询热线

400-123-4657

网站公告: 诚信为本,市场在变,诚信永远不变...
HONOR 荣誉资质

service phone 400-123-4657

JS逆向教程:Python收罗今日头条视频‘开元体育APP官方网站’

点击量:432    时间:2023-12-09
更多
  本文摘要:最近在做今日头条文章数据抓取的历程中,发现视频地址的获取较为庞大。

最近在做今日头条文章数据抓取的历程中,发现视频地址的获取较为庞大。在源码与浏览器配合下发现对应的解决思路,故此记载一下。

目录私信小编01即可获取大量Python学习资料需要的Python模块实现思路代码及运行效果正文1.需要的Python模块 模块主要有requests(或者aiohttp),PyExecJS。前者是请求文章的源码,后者是Python执行JS代码的依赖库,主要是生成视频地址12实现思路一. 需求主要是替换原有文章中的视频及图片地址为当地储存地址,因此需要下载资源,在针对视频分析时通过抓包发现对应的视 频地址,可是在源码及相关接口响应中都未发现对应的视频地址参数。通过文章源码(HTML)浏览器渲染发现video标签后期生成,视频地址也存在,那么此标签肯定通过JS生成,通过查找发现关键JS所在标签script二. 分析该地址对应的js发现内里有生成video标签的方法,在依次推断这内里有视频地址生成的方法,如下:这里可以清楚我们所要的视频地址从何而来,下面是该方法:分析该方法,发现其中有一个关键参数t,另外在图二中我们发现方法e,填入的参数v,这里让我想到之前抓包中有个接口返回的效果对应的main_url var u = o.data.video_list, h = u.video_1, v = h.main_url, 123三. 该接口为:https://i.snssdk.com/video/urls/1/toutiao/mp4/v0201f800000bub4vq2vtt9a5oknnlp0?callback=tt__video__3e9q4q接口返回效果中:同时,该接口中的参数(v0201f800000bub4vq2vtt9a5oknnlp0)在源码中即可找到,可用正则匹配。可以斗胆实验一下,将main_url值加入生成视频地址的方法中实验下,另外需要将JS最下面的几个参数加上即:var c = new Array( - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 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, -1, -1, -1, -1, -1, -1, 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, -1, -1, -1, -1, -1); 1我用的是JS调试工具(利便调试,检查代码语法),也可用其他方法效果为:http://v6-default.ixigua.com/b742fb26ade01b94ae81b46009d87380/5f9944fe/video/tos/cn/tos-cn-ve-31/cb2c3a57a679486eba880ef014c36ca0/?a=2011&br=1368&bt=456&cr=0&cs=0&cv=1&dr=0&ds=1&er=&l=202010281712370101941000395102D7B3&lr=&mime_type=video_mp4&qs=0&rc=M29xcmR3eXQ3eDMzM2kzM0ApZmVkZjo5OGVkNzM6PDozaWdta2gyNnEvc19fLS01Li9zczIuLl41YTFjXi8yMTReYGM6Yw%3D%3D&vl=&vr=该地址即为视频地址,因此证明晰以上的料想正确,可是该地址参数是有时效的,因此要动态变换。

可以自己测试重新生成。代码及运行效果(我接纳的是异的方式)async def get_page_source(url): browser = None page = None try: browser = await launch( headless=True, ignoreHTTPSErrors=True, handleSIGINT=False, handleSIGTERM=False, handleSIGHUP=False, defaultViewport=None, args=['--disable-setuid-sandbox', '--no-sandbox', '--ignore-certificate-errors',。


本文关键词:开元体育APP官方网站

本文来源:开元体育APP官方网站-www.yingujr.com

地址:四川省遂宁市原平市瑞国大楼68号    电话:400-123-4657    传真:+86-123-4567
版权所有:Copyright © 2007-2023 www.yingujr.com. 开元体育APP官方网站科技 版权所有   ICP备案编号:ICP备94991741号-8