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