def encrypt_py(plain_text, key): if plain_text: try: scraper_key = hashlib.sha256(key).digest() IV = '\0' * 16 decrypter = pyaes.Encrypter(pyaes.AESModeOfOperationCBC(scraper_key, IV)) cipher_text = decrypter.feed(plain_text) cipher_text += decrypter.feed() except Exception as e: logger.log_warning('Exception during Py Encrypt: %s' % (e)) cipher_text = '' else: cipher_text = '' return cipher_text
def generate_vs_request(player_url, player_page): mw_pid = re.compile(r"partner_id:\s*(\w*),").findall(player_page)[0] p_domain_id = re.compile(r"domain_id:\s*(\w*),").findall(player_page)[0] _mw_adb = False video_token = re.compile(r"video_token:\s*\S?\'([0-9a-f]*)\S?\'").findall( player_page)[0] cookies = get_cookies(player_page) js_path = re.compile(r'script src=\"(.*)\"').findall(player_page)[0] js_page = get_html("http://" + player_url.split('/')[2] + js_path) regex_window_value = r'eval\("window"\)\["' + cookies[0] + r'"\]="(\w+)"' window_value = re.compile(regex_window_value).findall(js_page)[ 0] # d value e_value = re.compile(r'getVideoManifests:function\(\){var e="(\w+)"' ).findall(js_page)[0] # key r_value = re.compile(r'r="(\w+)",o').findall(js_page)[0] # iv t = EncryptedData() t.a = mw_pid t.b = p_domain_id t.c = _mw_adb t.d = window_value t.e = video_token # t.f = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36" t.f = USER_AGENT json_string = t.to_json() encrypt_mode = pyaes.AESModeOfOperationCBC( binascii.a2b_hex('7316d0c4' + e_value), binascii.a2b_hex(r_value)) encrypter = pyaes.Encrypter(encrypt_mode) encrypted = bytes() encrypted += encrypter.feed(json_string) encrypted += encrypter.feed() return base64.standard_b64encode(encrypted)