首页 > 编程语言 >Python爬虫:从js逆向了解西瓜视频的下载链接的生成

Python爬虫:从js逆向了解西瓜视频的下载链接的生成

时间:2023-02-14 11:11:27浏览次数:62  
标签:definition Python 爬虫 js url json video backup

文章内容在csdn上,链接为:Python爬虫:从js逆向了解西瓜视频的下载链接的生成
参考代码为:

import requests
from crawlers.userAgent import useragent
from lxml import etree
import json
import execjs

u = useragent()
url = input('输入链接:')
headers = {
    'user-agent':u.getUserAgent(),
    'cookie': '_ga=GA1.2.1050417450.1614331766; __gads=ID=219beb92a387f147-221a9bb312d00082:T=1642755398:RT=1642755398:S=ALNI_MbBZhXsNEhcjCou62SfFZv3EKypUg; dark=false; odin_tt=e889b4e035114ca274f380a0225a005df6ec13f085ec797a7ac0b6f9fc2dec97bf5328b4c87024a2285ce9add53034952cadf68eb306bf39eefad41902246acc; sid_guard=f6b9c19281ef9716eaa6f5c5a7734253%7C1666671058%7C5183999%7CSat%2C+24-Dec-2022+04%3A10%3A57+GMT; s_v_web_id=verify_lcd3hn9u_b2wJPaqV_gjbL_4hgh_8J3n_QWOnUCTNPFmS; MONITOR_WEB_ID=b4711595-bde2-460d-870d-4e57a1044873; ixigua-a-s=1; support_webp=true; support_avif=true; csrf_session_id=55aad65cfc16c343cca9cb5a7875c790; msToken=icA4BrE2TSaU9VlJYbvVUt3iEB_rko7GiAOsK-RZ0Hn12o5n9bmoZ8QxKgN8wt_o_-TA62249Dm3raTxK2ExmNY9_qexif3868muOvE3SZalaAYDuqCiuIOMqfNCO1o=; tt_scid=9acRPaBKm0oHEeEcBJWXPkZW07ARMqNfn9QvWpVm6WS8PA4ZXibRiKyWKWDNsT-sce27; ttwid=1%7C88hLt65tT2Y_6wV63zp5I3Bf28yx58wVdlSP3Tsr_44%7C1676202266%7Cf5aee47dfc3e0a1d4cdfbf761b6c65dd8fda07f8904927398cdb1e872acfb5e0; __ac_nonce=063e8d16500a52750f20b; __ac_signature=_02B4Z6wo00f01WElQMAAAIDA6m7bI5cpBo1hBURAADulPSpqsuE67pPP4Ky.j3XPBtoiYyaJVp0vqMdZqcQjXAMbwUWgSlEIlTjO0s5W8V7VtN6aoVcxqcVs6.a3Bvv9F8tL9tV5PK5iODa992; __ac_referer=https://www.ixigua.com/'
}
rsp = requests.get(url=url,headers=headers)
HTML = etree.HTML(rsp.text)
str_2 = HTML.xpath('//script[@id="SSR_HYDRATED_DATA"]/text()')[0]
print(str_2)
json_2 = str_2[str_2.find('{'):str_2.rfind('}')+1]
Irregulars = ['null','undefined','=false','=true','false','true']
# python中不规则的定义
for I in Irregulars:
    if I in ['=false','=true']:
        json_2 = json_2.replace(I,'='+I[1:].capitalize())
    else:
        json_2 = json_2.replace(I,'12')
dict_2 = json.loads(json_2)
print(dict_2)

with open(file='decode.js', mode='r', encoding='utf-8') as f:
    js_2 = f.read()
ctx = execjs.compile(js_2)

videoResource = dict_2['anyVideo']['gidInformation']['packerData']['video']['videoResource']
for key in videoResource.keys():
    if type(videoResource[key]) == dict:
        print(key)
        videoInfo = videoResource[key]
        if 'dynamic_video' in videoInfo.keys():
            videoList = videoInfo['dynamic_video']['dynamic_video_list']
            for d in videoList:
                definition = d['definition']
                backup_url_1 = d['backup_url_1']
                print(definition, ctx.call('base64decode', backup_url_1))
        elif 'video_list' in videoInfo.keys():
            videoObj = videoInfo['video_list']
            for k in videoObj:
                definition = videoObj[k]['definition']
                backup_url_1 = videoObj[k]['backup_url_1']
                print(definition, ctx.call('base64decode', backup_url_1))

标签:definition,Python,爬虫,js,url,json,video,backup
From: https://www.cnblogs.com/liuze-2/p/17118952.html

相关文章

  • 从 Newtonsoft.Json 迁移到 System.Text.Json
    一.写在前面System.Text.Json是.NETCore3及以上版本内置的Json序列化组件,刚推出的时候经常看到踩各种坑的吐槽,现在经过几个版本的迭代优化,提升了易用性,修复了各种......
  • JQuery对象和JS对象的区别与转换
    JQuery对象和JS对象区别与转换1JQuery对象在操作时更加方便2JQuery对象和js对象方法不通用的3两者相互转换jq转js:jq对象[索引]或jq对象,get......
  • JMeter java模拟多用户高并发请求测试(json,form表单)
     1.情景展示在实际开发过程中,需要进行测试的时候,往往需要进行压力测试,或者高并发情况下,同时对一张表数据进行修改、读取操作,程序会不会出现多个用户取出的数据一致,或者......
  • gdb debug python2.7 AttributeError: module 'enum' has no attribute 'IntFlag'
    gdbpythoncore之后报如下错误:该错误会导致后续bt命令无法解析名称符号。如果enum34不是用过pip安装的,则进入pythonimportenum,然后print(enum.__file__)找到......
  • python 安装redis,rediscluster
    首先看下pip版本,过低版本会出问题[root@testrpm]#pip-Vpip20.3.4from/usr/lib/python2.7/site-packages/pip(python2.7)再进行安装,包名要改成redis-py-cluste......
  • centos-安装python3.8+,并配置用户虚拟环境
    1.在官网下载稳定版本的源文件https://www.python.org/downloads/source/   2.上传到服务其中并解压,然后进入解压目录:tar-zxvfPython-3.8.16.tgz  3......
  • Python3中的“加和”函数
    技术背景其实如果没有专门去研究python的一些内置函数的话,我们都没办法发现一些很神奇的功能,即使是我们最熟悉的python中的sum函数。不知道还有多少人,以为这只是一个只能......
  • node.js 定时任务/重复任务
    文章目录​​git​​​​参数​​​​定时任务​​​​每天0点执行一次数据统计任务​​​​每半个小时执行一次数据统计任务​​​​重复任务​​​​指定执行时间氛围​​......
  • node.js 发送邮件
    constnodemailer=require("nodemailer");lettransporter=null;asyncfunctioncreateMailServer(){transporter=nodemailer.createTransport({host:"......
  • Python 科研绘图总结2 一 子图,三维立方体
    Python科研绘图总结2一子图,三维立方体目录Python科研绘图总结2一子图,三维立方体1子图相关函数代码效果2三维图相关函数代码效果3三维动图相关函数代码效果4三维......