央视频刷播放量

央视频链接注意点:央视频在浏览器打开不了其他视频,因为只有APP端而没有网页端,需要自己在app端找到指定视频,通过分享连接的形式获取到web连接。

1.前置知识点

1.1 字符串转字典方法

字符串转字典方法一:

# info = "{'code':123,'msg':999}" # 这种格式使用 json.loads 转换会失败,需要将里面换成双引号。
info = '{"code":123,"msg":999}'

import json

data_dict = json.loads(info)
print(data_dict, type(data_dict))

字符串转字典方法二(推荐)

info = "{'code':123,'msg':999}"

result = eval(info)
print(result, type(result))

1.2 JSONP

json

https://api.bilibili.com/x/player/pagelist?bvid=BV1XA411779D

jsonp,解决浏览器同源策略引发的跨域。

http://www.jxntv.cn/data/jmd-jxtv2.html?callback=list&_=1454376870403

如果你想某个站发送请求,获取JSONP格式,你会怎么办?
(1)切片+序列化
(2)replace
(3)eval内置函数对数据进行编译(当成代码来编译)

def xxxxxx(info):
    print(type(info), info)
​
v1 = 'xxxxxx( {"code":0,"message":"0","ttl":1} )'
eval(v1)

 

1.3 AES加密

pip install pycryptodome

AES加密(key和iv => utf-8 => 字节处理)

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
​
​
def aes_encrypt(data_string):
    data = data_string.encode("utf-8")
​
    key = "fd6b639dbcff0c2a1b03b389ec763c4b".encode('utf-8')
    iv = "77b07a672d57d64c".encode('utf-8')
​
    aes = AES.new(
        key=key,
        iv=iv,
        mode=AES.MODE_CBC,
    )
    raw = pad(data, 16)
    return aes.encrypt(raw)
​
​
data = "|878975262|d000035rirv|1631615607|mg3c3b04ba|1.3.5|ktjwlm89_to920weqpg|433070"
​
result = aes_encrypt(data)
print(result)
​

AES加密(十六进制字节处理)

import binascii
​
v1 = "4E2918885FD98109869D14E0231A0BF4"
​
"""
bs = bytearray() # []
for i in range(0, len(v1), 2):
    item_hex = v1[i:i + 2]
    item_int = int(item_hex, base=16)
    bs.append(item_int)
v3 = bytes(bs)
print(v3) # b'N)\x18\x88_\xd9\x81\t\x86\x9d\x14\xe0#\x1a\x0b\xf4'
"""
​
v3 = binascii.a2b_hex(v1)
print(v3) # b'N)\x18\x88_\xd9\x81\t\x86\x9d\x14\xe0#\x1a\x0b\xf4'

 

 

 

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import binascii
​
def aes_encrypt(data_string):
    key_string = "4E2918885FD98109869D14E0231A0BF4"
    key = binascii.a2b_hex(key_string)
​
    iv_string = "16B17E519DDD0CE5B79D7A63A4DD801C"
    iv = binascii.a2b_hex(iv_string)
​
    aes = AES.new(
        key=key,
        mode=AES.MODE_CBC,
        iv=iv
    )
    raw = pad(data_string.encode('utf-8'), 16)
    aes_bytes = aes.encrypt(raw)
    return binascii.b2a_hex(aes_bytes).decode().upper()
​
​
data = "|878975262|d000035rirv|1631615607|mg3c3b04ba|1.3.5|ktjwlm89_to920weqpg|4330701|https://w.yangshipin.cn/|mozilla/5.0 (macintosh; ||Mozilla|Netscape|MacIntel|"
​
result = aes_encrypt(data)
print(result)

 

2.抓包

  • 打开app

  • 找到一个视频,分享:链接

  • 发到自己微信,点击浏览器跳转

posted @ 2023-06-10 18:09  屠魔的少年  阅读(8)  评论(0)    收藏  举报