demo.py 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. # -*- coding: utf-8 -*-
  2. # @Author: wangkun
  3. # @Time: 2022/8/23
  4. import ast
  5. import base64
  6. import json
  7. import os
  8. import subprocess
  9. import requests
  10. import urllib3
  11. from main.feishu import Feishu
  12. proxies = {'http:': None, 'https': None}
  13. class Demo:
  14. @classmethod
  15. def base64_decode(cls):
  16. s = 'aHR0cDovL3Y5LXhnLXdlYi1wYy5peGlndWEuY29tLzgzNGU4ODYxZDU4ODZiN2I2MWU0NjlkNzdiY2M4MTgxLzYzMDRjZGExL3ZpZGVvL3Rvcy9jbi90b3MtY24tby0wMDA0L2Y2MTBmMjNjZDBiMzRlZmQ4OTNlMTdmM2MwYzIxYTViL21lZGlhLXZpZGVvLWF2YzEvP2E9MTc2OCZjaD0wJmNyPTAmZHI9MCZlcj0wJmNkPTAlN0MwJTdDMCU3QzAmY3Y9MSZicj0yNDEzJmJ0PTI0MTMmY3M9MCZkcz00Jm1pbWVfdHlwZT12aWRlb19tcDQmcXM9MCZyYz1PVGRtTnpzMVptVmxaencwWjJZN00wQnBhbXM4Y1dVNlptUThaak16TkRjek0wQmZNakF5WGpSZVhpOHhNQzh1WHpRdVlTTnhObkl5Y2pSbk5pMWdMUzFrTFM5emN3JTNEJTNEJmw9MjAyMjA4MjMxOTQxNDYwMTAxNTgwMjgyMjAwMTk2MEJGQQ=='
  17. base64_url = base64.b64decode(s).decode('utf8')
  18. print(base64_url)
  19. @classmethod
  20. def ffmpeg(cls):
  21. video_path = '../videos/陕西第二支预告片,武则天乾陵,气势磅礴,夕阳下拍到神奇的一幕/video1.mp4'
  22. audio_path = '../videos/陕西第二支预告片,武则天乾陵,气势磅礴,夕阳下拍到神奇的一幕/audio1.mp4'
  23. out_path = '../videos/陕西第二支预告片,武则天乾陵,气势磅礴,夕阳下拍到神奇的一幕/video.mp4'
  24. cmd = 'ffmpeg -i ' + video_path + ' -i ' + audio_path + ' -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 ' + out_path
  25. print(cmd)
  26. subprocess.call(cmd, shell=True)
  27. print(os.listdir('../videos/陕西第二支预告片,武则天乾陵,气势磅礴,夕阳下拍到神奇的一幕/'))
  28. for file in os.listdir('../videos/陕西第二支预告片,武则天乾陵,气势磅礴,夕阳下拍到神奇的一幕/'):
  29. # print(file.title())
  30. if file.split('.mp4')[0] == 'video1' or file.split('.mp4')[0] == 'audio1':
  31. os.remove('../videos/陕西第二支预告片,武则天乾陵,气势磅礴,夕阳下拍到神奇的一幕/' + file)
  32. @classmethod
  33. def sheet(cls, log_type):
  34. sheet = Feishu.get_values_batch(log_type, 'xigua', 'e075e9')
  35. print(sheet)
  36. @classmethod
  37. def get_video_info(cls, gid):
  38. url = 'https://www.ixigua.com/api/mixVideo/information?'
  39. headers = {
  40. "accept-encoding": "gzip, deflate, br",
  41. "accept-language": "zh-CN,zh-Hans;q=0.9",
  42. "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) "
  43. "AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15",
  44. "referer": "https://www.ixigua.com/7102614741050196520?logTag=0531c88ac04f38ab2c62",
  45. }
  46. params = {
  47. 'mixId': gid,
  48. 'msToken': 'IlG0wd0Pylyw9ghcYiB2YseUmTwrsrqqhXrbIcsSaTcLTJyVlbYJzk20zw3UO-CfrfC'
  49. 'NVVIOBNjIl7vfBoxnVUwO9ZyzAI3umSKsT5-pef_RRfQCJwmA',
  50. 'X-Bogus': 'DFSzswVupYTANCJOSBk0P53WxM-r',
  51. '_signature': '_02B4Z6wo0000119LvEwAAIDCuktNZ0y5wkdfS7jAALThuOR8D9yWNZ.EmWHKV0WSn6Px'
  52. 'fPsH9-BldyxVje0f49ryXgmn7Tzk-swEHNb15TiGqa6YF.cX0jW8Eds1TtJOIZyfc9s5emH7gdWN94',
  53. }
  54. cookies = {
  55. 'ixigua-a-s': '1',
  56. 'msToken': 'IlG0wd0Pylyw9ghcYiB2YseUmTwrsrqqhXrbIcsSaTcLTJyVlbYJzk20zw3UO-CfrfCNVVIOB'
  57. 'NjIl7vfBoxnVUwO9ZyzAI3umSKsT5-pef_RRfQCJwmA',
  58. 'ttwid': '1%7C_yXQeHWwLZgCsgHClOwTCdYSOt_MjdOkgnPIkpi-Sr8%7C1661241238%7Cf57d0c5ef3f1d7'
  59. '6e049fccdca1ac54887c34d1f8731c8e51a49780ff0ceab9f8',
  60. 'tt_scid': 'QZ4l8KXDG0YAEaMCSbADdcybdKbUfG4BC6S4OBv9lpRS5VyqYLX2bIR8CTeZeGHR9ee3',
  61. 'MONITOR_WEB_ID': '0a49204a-7af5-4e96-95f0-f4bafb7450ad',
  62. '__ac_nonce': '06304878000964fdad287',
  63. '__ac_signature': '_02B4Z6wo00f017Rcr3AAAIDCUVxeW1tOKEu0fKvAAI4cvoYzV-wBhq7B6D8k0no7lb'
  64. 'FlvYoinmtK6UXjRIYPXnahUlFTvmWVtb77jsMkKAXzAEsLE56m36RlvL7ky.M3Xn52r9t1IEb7IR3ke8',
  65. 'ttcid': 'e56fabf6e85d4adf9e4d91902496a0e882',
  66. '_tea_utm_cache_1300': 'undefined',
  67. 'support_avif': 'false',
  68. 'support_webp': 'false',
  69. 'xiguavideopcwebid': '7134967546256016900',
  70. 'xiguavideopcwebid.sig': 'xxRww5R1VEMJN_dQepHorEu_eAc',
  71. }
  72. urllib3.disable_warnings()
  73. response = requests.get(url=url, headers=headers, params=params, cookies=cookies, proxies=proxies, verify=False)
  74. if 'data' not in response.json() or response.json()['data'] == '':
  75. print(f'response: {response}')
  76. else:
  77. video_info = response.json()['data']['gidInformation']['packerData']['video']
  78. video_url = ''
  79. audio_url = ''
  80. video_width = ''
  81. video_height = ''
  82. # video_url
  83. if 'videoResource' not in video_info:
  84. video_url = 0
  85. audio_url = 0
  86. video_width = 0
  87. video_height = 0
  88. elif 'dash' in video_info['videoResource']:
  89. video_url = video_info['videoResource']['dash']['dynamic_video']['dynamic_video_list'][-1]['main_url']
  90. audio_url = video_info['videoResource']['dash']['dynamic_video']['dynamic_audio_list'][-1]['main_url']
  91. video_url = base64.b64decode(video_url).decode('utf8')
  92. audio_url = base64.b64decode(audio_url).decode('utf8')
  93. video_width = video_info['videoResource']['dash']['dynamic_video']['dynamic_video_list'][-1]['vwidth']
  94. video_height = video_info['videoResource']['dash']['dynamic_video']['dynamic_video_list'][-1]['vheight']
  95. elif 'normal' in video_info['videoResource']:
  96. video_list = video_info['videoResource']['normal']['video_list']
  97. if 'video_4' in video_list.keys():
  98. video_url = video_list['video_4']['main_url']
  99. audio_url = video_list['video_4']['main_url']
  100. video_url = base64.b64decode(video_url).decode('utf8')
  101. audio_url = base64.b64decode(audio_url).decode('utf8')
  102. video_width = video_list['video_4']['vwidth']
  103. video_height = video_list['video_4']['vheight']
  104. elif 'video_3' in video_list.keys():
  105. video_url = video_list['video_3']['main_url']
  106. audio_url = video_list['video_3']['main_url']
  107. video_url = base64.b64decode(video_url).decode('utf8')
  108. audio_url = base64.b64decode(audio_url).decode('utf8')
  109. video_width = video_list['video_3']['vwidth']
  110. video_height = video_list['video_3']['vheight']
  111. elif 'video_2' in video_list.keys():
  112. video_url = video_list['video_2']['main_url']
  113. audio_url = video_list['video_2']['main_url']
  114. video_url = base64.b64decode(video_url).decode('utf8')
  115. audio_url = base64.b64decode(audio_url).decode('utf8')
  116. video_width = video_list['video_2']['vwidth']
  117. video_height = video_list['video_2']['vheight']
  118. elif 'video_1' in video_list.keys():
  119. video_url = video_list['video_1']['main_url']
  120. audio_url = video_list['video_1']['main_url']
  121. video_url = base64.b64decode(video_url).decode('utf8')
  122. audio_url = base64.b64decode(audio_url).decode('utf8')
  123. video_width = video_list['video_1']['vwidth']
  124. video_height = video_list['video_1']['vheight']
  125. else:
  126. video_url = 0
  127. audio_url = 0
  128. video_width = 0
  129. video_height = 0
  130. # for i in range(len(list(video_list.values()))):
  131. # key = list(video_list.keys())[i]
  132. # value = list(video_list.values())[i]
  133. #
  134. # if key == 'video_4':
  135. # video_url = value['main_url']
  136. # audio_url = value['main_url']
  137. # video_url = base64.b64decode(video_url).decode('utf8')
  138. # audio_url = base64.b64decode(audio_url).decode('utf8')
  139. # video_width = value['vwidth']
  140. # video_height = value['vheight']
  141. #
  142. # elif key == 'video_3':
  143. # video_url = value['main_url']
  144. # audio_url = value['main_url']
  145. # video_url = base64.b64decode(video_url).decode('utf8')
  146. # audio_url = base64.b64decode(audio_url).decode('utf8')
  147. # video_width = value['vwidth']
  148. # video_height = value['vheight']
  149. #
  150. # elif key == 'video_2':
  151. # video_url = value['main_url']
  152. # audio_url = value['main_url']
  153. # video_url = base64.b64decode(video_url).decode('utf8')
  154. # audio_url = base64.b64decode(audio_url).decode('utf8')
  155. # video_width = value['vwidth']
  156. # video_height = value['vheight']
  157. #
  158. # elif key == 'video_1':
  159. # video_url = value['main_url']
  160. # audio_url = value['main_url']
  161. # video_url = base64.b64decode(video_url).decode('utf8')
  162. # audio_url = base64.b64decode(audio_url).decode('utf8')
  163. # video_width = value['vwidth']
  164. # video_height = value['vheight']
  165. # else:
  166. # video_url = 0
  167. # audio_url = 0
  168. # video_width = 0
  169. # video_height = 0
  170. #
  171. # # if '1080p' in list(video_list.values())[i]['definition']:
  172. # # video_url = list(video_list.values())[i]['main_url']
  173. # # audio_url = list(video_list.values())[i]['main_url']
  174. # # video_url = base64.b64decode(video_url).decode('utf8')
  175. # # audio_url = base64.b64decode(audio_url).decode('utf8')
  176. # # video_width = list(video_list.values())[i]['vwidth']
  177. # # video_height = list(video_list.values())[i]['vheight']
  178. # # elif '720p' in list(video_list.values())[i]['definition']:
  179. # # video_url = list(video_list.values())[i]['main_url']
  180. # # audio_url = list(video_list.values())[i]['main_url']
  181. # # video_url = base64.b64decode(video_url).decode('utf8')
  182. # # audio_url = base64.b64decode(audio_url).decode('utf8')
  183. # # video_width = list(video_list.values())[i]['vwidth']
  184. # # video_height = list(video_list.values())[i]['vheight']
  185. # # elif '480p' in list(video_list.values())[i]['definition']:
  186. # # video_url = list(video_list.values())[i]['main_url']
  187. # # audio_url = list(video_list.values())[i]['main_url']
  188. # # video_url = base64.b64decode(video_url).decode('utf8')
  189. # # audio_url = base64.b64decode(audio_url).decode('utf8')
  190. # # video_width = list(video_list.values())[i]['vwidth']
  191. # # video_height = list(video_list.values())[i]['vheight']
  192. # # elif '360p' in list(video_list.values())[i]['definition']:
  193. # # video_url = list(video_list.values())[i]['main_url']
  194. # # audio_url = list(video_list.values())[i]['main_url']
  195. # # video_url = base64.b64decode(video_url).decode('utf8')
  196. # # audio_url = base64.b64decode(audio_url).decode('utf8')
  197. # # video_width = list(video_list.values())[i]['vwidth']
  198. # # video_height = list(video_list.values())[i]['vheight']
  199. print(f'video_url:{video_url}')
  200. print(f'audio_url:{audio_url}')
  201. print(f'video_width:{video_width}')
  202. print(f'video_height:{video_height}')
  203. @classmethod
  204. def get_signature(cls):
  205. # line = {'level': 'INFO',
  206. # 'message': '{"message":{"method":"Network.responseReceived","params":{"frameId":"A577824F4AEC626A0E7B1E67515C020B","hasExtraInfo":true,"loaderId":"4C8B8024778C547E73056E298C1199CF","requestId":"20233.355","response":{"connectionId":13,"connectionReused":true,"encodedDataLength":572,"fromDiskCache":false,"fromPrefetchCache":false,"fromServiceWorker":false,"headers":{"content-length":"53","content-type":"application/json; charset=utf-8","date":"Thu, 22 Sep 2022 06:21:39 GMT","eagleid":"7c8486d116638276996804276e","server":"Tengine","server-timing":"inner; dur=40, tt_agw; dur=39, cdn-cache;desc=MISS,edge;dur=10,origin;dur=65","strict-transport-security":"max-age=31536000; includeSubDomains","timing-allow-origin":"*","via":"cache31.l2cm9-6[65,0], cache9.cn2049[75,0]","x-agw-info":"xVgLW9WxHAAG33_khm6L2a8ReWONzX5A1dCyebQN9pV1gLCk8dbQVtZIfVMaO031QpBph1oWkhQ6czSXetfTPHLeDeO-Mct8PB8_S1YfgeNXqqjKQOb9DI-AygaTj86mkA9zn3lILbkE6LDqjB0bu9Ap9JlnN3laAz3Geb9M4xZ759bsHBTFySc=","x-content-type-options":"nosniff","x-download-options":"noopen","x-frame-options":"SAMEORIGIN","x-trans-level":"0","x-tt-logid":"20220922142139010151190080030D8357","x-tt-trace-host":"01d3e0070115308d6e7072e1066a5ff763a5d3a58f00e80e220c124847e6eeb9e70d5462c3b67b716c6b5bf35c4f08d47888aaa9af3610c58aac0d0d0ca7ce5d4cef54fa5205a53e5d7ff2f40cc122d0b128cb2b9fb83f9e6a84965a6ad8c66cb3","x-tt-trace-tag":"id=03;cdn-cache=miss;type=dyn","x-xss-protection":"1; mode=block"},"mimeType":"application/json","protocol":"h2","remoteIPAddress":"124.132.134.227","remotePort":443,"responseTime":1.663827699692927e+12,"securityDetails":{"certificateId":0,"certificateTransparencyCompliance":"unknown","cipher":"AES_256_GCM","encryptedClientHello":false,"issuer":"RapidSSL Global TLS RSA4096 SHA256 2022 CA1","keyExchange":"","keyExchangeGroup":"X25519","protocol":"TLS 1.3","sanList":["*.ixigua.com","ixigua.com"],"serverSignatureAlgorithm":2052,"signedCertificateTimestampList":[],"subjectName":"*.ixigua.com","validFrom":1658102400,"validTo":1689638399},"securityState":"secure","status":200,"statusText":"","timing":{"connectEnd":-1,"connectStart":-1,"dnsEnd":-1,"dnsStart":-1,"proxyEnd":-1,"proxyStart":-1,"pushEnd":0,"pushStart":0,"receiveHeadersEnd":109.989,"requestTime":255819.986241,"sendEnd":0.355,"sendStart":0.177,"sslEnd":-1,"sslStart":-1,"workerFetchStart":-1,"workerReady":-1,"workerRespondWithSettled":-1,"workerStart":-1},"url":"https://www.ixigua.com/at/log/c?msToken=G687B1o_7DTeKdhq-9JMQbDxhK1hzpcdN6DTLUn6SWIq9Xo3ziv-DWrsNqqK8PBrvFzrURV18gBiG82keZcfMdht0qng_bRzQhooy8nwITUATUqn5Uqh0OxC2_XRX9j1vy71&X-Bogus=DFSzKwROEFtBHb-lSsScqggX1TFT&_signature=_02B4Z6wo00001v7TvHwAAIDAjPVk4Z9W.GL-w5jAANysmUCNpvb5Srvg6eExeryhDFeyGu4zoN-PpB3S4tD46UJWh9tF.cXH0ggjdznFn8lC79XMTEkl87e.QyQ80f5TS2h0bl5J77lPHbrN59"},"timestamp":255820.192025,"type":"XHR"}},"webview":"A577824F4AEC626A0E7B1E67515C020B"}',
  207. # 'timestamp': 1663827699791}
  208. # message = line['message']
  209. # message = json.loads(message)
  210. # url = message['message']['params']['response']['url']
  211. # print(url)
  212. # signature = url.split('_signature=')[-1]
  213. # print(signature)
  214. s = '_02B4Z6wo000017YitjQAAIDBxARuqbJSv0e2MpKAAI6tf5'
  215. print(len(s))
  216. @classmethod
  217. def get_logs(cls):
  218. line = {'level': 'INFO', 'message': '{"message":{"method":"Network.requestWillBeSent","params":{"documentURL":"https://www.ixigua.com/home/2176672314697038?wid_try=1","frameId":"24695B3CE9005D0774AAFF0A724D3FBB","hasUserGesture":false,"initiator":{"stack":{"callFrames":[{"columnNumber":35022,"functionName":"_0x231eec","lineNumber":0,"scriptId":"13","url":"https://lf3-cdn-tos.bytescm.com/obj/rc-web-sdk/webmssdk/1.0.0.200/webmssdk.js"},{"columnNumber":38043,"functionName":"_0xaaca18","lineNumber":0,"scriptId":"13","url":"https://lf3-cdn-tos.bytescm.com/obj/rc-web-sdk/webmssdk/1.0.0.200/webmssdk.js"},{"columnNumber":21778,"functionName":"_0x1ad8be","lineNumber":0,"scriptId":"13","url":"https://lf3-cdn-tos.bytescm.com/obj/rc-web-sdk/webmssdk/1.0.0.200/webmssdk.js"},{"columnNumber":11765,"functionName":"","lineNumber":15,"scriptId":"22","url":"https://lf3-cdn-tos.bdxiguastatic.com/obj/ixigua-static/xigua_fe/xigua_video_web_pc/static/js/2322.ab7e297d34.chunk.js"},{"columnNumber":8573,"functionName":"s","lineNumber":15,"scriptId":"22","url":"https://lf3-cdn-tos.bdxiguastatic.com/obj/ixigua-static/xigua_fe/xigua_video_web_pc/static/js/2322.ab7e297d34.chunk.js"},{"columnNumber":2729,"functionName":"","lineNumber":5,"scriptId":"20","url":"https://lf3-cdn-tos.bdxiguastatic.com/obj/ixigua-static/xigua_fe/xigua_video_web_pc/static/js/921.2a0cb01abe.js"},{"columnNumber":896,"functionName":"t.exports","lineNumber":5,"scriptId":"20","url":"https://lf3-cdn-tos.bdxiguastatic.com/obj/ixigua-static/xigua_fe/xigua_video_web_pc/static/js/921.2a0cb01abe.js"},{"columnNumber":6636,"functionName":"t.exports","lineNumber":5,"scriptId":"20","url":"https://lf3-cdn-tos.bdxiguastatic.com/obj/ixigua-static/xigua_fe/xigua_video_web_pc/static/js/921.2a0cb01abe.js"}]},"type":"script"},"loaderId":"6450A7DB215423980B9BF2B2DB96C634","redirectHasExtraInfo":false,"request":{"hasPostData":true,"headers":{"Accept":"application/json, text/plain, */*","Content-Type":"application/json","Referer":"https://www.ixigua.com/home/2176672314697038?wid_try=1","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36","sec-ch-ua":"","sec-ch-ua-mobile":"?0","sec-ch-ua-platform":""},"initialPriority":"High","isSameSite":true,"method":"POST","mixedContentType":"none","postData":"{\\"r\\":true,\\"d\\":[{\\"k\\":\\"page_user_detail\\",\\"v\\":\\"{\\\\\\"datetime\\\\\\":1663845216906,\\\\\\"uid\\\\\\":\\\\\\"2176672314697038\\\\\\"}\\"}]}","postDataEntries":[{"bytes":"eyJyIjp0cnVlLCJkIjpbeyJrIjoicGFnZV91c2VyX2RldGFpbCIsInYiOiJ7XCJkYXRldGltZVwiOjE2NjM4NDUyMTY5MDYsXCJ1aWRcIjpcIjIxNzY2NzIzMTQ2OTcwMzhcIn0ifV19"}],"referrerPolicy":"strict-origin-when-cross-origin","url":"https://www.ixigua.com/at/log/c?msToken=S2xjMDSRbcUSa_Yu2_lJvyyNfLv3qHTt7fBK1934s6iAStE2w_iUrwK3h5z--U64sEY27C4AD7q01Pk8MqY-S24WTNr1NcP2vpncUEERH7WyOXbCrqSrpaL5U-J2uamTRhKA&X-Bogus=DFSzKwROGiNtGb-lSs7ZpygX1TF0&_signature=_02B4Z6wo00001cJibNgAAIDDsES0RsA3NEHCckhAABO2zi5LJfAg0bn7ERn6D.mR4sl-MzAjzdJWB8.M7Y09XAVbMsqWai6.1xRtpT9yhYqnFSDZfWomDpYjk4cnBrUqPCjyd3Yj.UpuqoBo57"},"requestId":"2284.441","timestamp":7132.89006,"type":"XHR","wallTime":1663845216.930286}},"webview":"24695B3CE9005D0774AAFF0A724D3FBB"}', 'timestamp': 1663845216950}
  219. msg = json.loads(line['message'])
  220. document_url = msg['message']['params']['documentURL']
  221. if 'www.ixigua.com/home/2176672314697038' in document_url:
  222. url = msg['message']['params']['request']['url']
  223. print(url)
  224. # for k, v in msg['message']['params']['request'].items():
  225. # print(f'{k}:{v}')
  226. if __name__ == '__main__':
  227. # Demo.base64_decode()
  228. # Demo.ffmpeg()
  229. # Demo.sheet('xigua')
  230. # Demo.get_video_info('7133153239867851295')
  231. # Demo.get_signature()
  232. Demo.get_logs()
  233. pass