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()
|