mirror of
https://github.com/letian1650/N3RD.git
synced 2025-01-25 04:05:17 +08:00
90 lines
2.8 KiB
Python
90 lines
2.8 KiB
Python
|
import requests
|
|||
|
import execjs
|
|||
|
import re
|
|||
|
import time
|
|||
|
from urllib.parse import quote, unquote
|
|||
|
|
|||
|
|
|||
|
class iqiyi:
|
|||
|
def __init__(self, url):
|
|||
|
self.url = url
|
|||
|
self.headers = {
|
|||
|
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36¬"
|
|||
|
}
|
|||
|
self.authkey = self.load_auth_js()
|
|||
|
self.cmd5js = self.load_cmd5x_js()
|
|||
|
|
|||
|
def load_auth_js(self):
|
|||
|
return execjs.compile(open("./js/iqiyi.js").read())
|
|||
|
|
|||
|
def load_cmd5x_js(self):
|
|||
|
return execjs.compile(open("./js/cmd5x.js").read())
|
|||
|
|
|||
|
def get_tvid(self):
|
|||
|
res = requests.get(self.url, headers=self.headers)
|
|||
|
# print(res.text)
|
|||
|
tvid = re.findall("tvid=(.*?)&aid", res.text)[0]
|
|||
|
vid = re.findall('"vid":"(.*?)",', res.text)[0]
|
|||
|
# print(tvid)
|
|||
|
return tvid, vid
|
|||
|
|
|||
|
def join_params(self):
|
|||
|
tvid, vid = self.get_tvid()
|
|||
|
_time = int(time.time() * 1000)
|
|||
|
params = {
|
|||
|
"tvid": tvid,
|
|||
|
"bid": "300",
|
|||
|
"vid": vid,
|
|||
|
"src": "01080031010000000000",
|
|||
|
"vt": "0",
|
|||
|
"rs": "1",
|
|||
|
"uid": "",
|
|||
|
"ori": "pcw",
|
|||
|
"ps": "1",
|
|||
|
"k_uid": "1bf80ab6e72de7ab4a42f4db91bd530b",
|
|||
|
"pt": "0",
|
|||
|
"d": "0",
|
|||
|
"s": "",
|
|||
|
"lid": "",
|
|||
|
"cf": "",
|
|||
|
"ct": "",
|
|||
|
"authKey": self.authkey.call("auth", self.authkey.call("auth", "") + f"{_time}{tvid}"),
|
|||
|
"k_tag": "1",
|
|||
|
"ost": "undefined",
|
|||
|
"ppt": "undefined",
|
|||
|
"dfp": "a16da00a581aa149139fe169e3914993e4ff9cb705a50e3a41fc7927f988f2cb3e",
|
|||
|
"locale": "zh_cn",
|
|||
|
"prio": quote('{"ff":"f4v","code":2}'),
|
|||
|
"pck": "",
|
|||
|
"k_err_retries": "0",
|
|||
|
"up": "",
|
|||
|
"qd_v": "2",
|
|||
|
"tm": _time,
|
|||
|
"qdy": "a",
|
|||
|
"qds": "0",
|
|||
|
"k_ft1": "706436220846084",
|
|||
|
"k_ft4": "36283952406532",
|
|||
|
"k_ft5": "1",
|
|||
|
"bop": quote(
|
|||
|
'{"version":"10.0","dfp":"a16da00a581aa149139fe169e3914993e4ff9cb705a50e3a41fc7927f988f2cb3e"}'),
|
|||
|
"ut": "0"
|
|||
|
}
|
|||
|
temp = "/dash?"
|
|||
|
for k, v in params.items():
|
|||
|
temp += k + "=" + str(v) + "&"
|
|||
|
vf = self.cmd5js.call("parse_vf", temp[:-1])
|
|||
|
params['vf'] = vf
|
|||
|
# requests 会再次进行url编码,所以一开始怎么弄都不对!!!!这里要解码!!
|
|||
|
params["bop"] = unquote(params["bop"])
|
|||
|
params["prio"] = unquote(params["prio"])
|
|||
|
return params
|
|||
|
|
|||
|
def start(self):
|
|||
|
params = self.join_params()
|
|||
|
res = requests.get("https://cache.video.iqiyi.com/dash", params=params, headers=self.headers)
|
|||
|
print(res.text)
|
|||
|
|
|||
|
|
|||
|
if __name__ == '__main__':
|
|||
|
iqiyi().start()
|