123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- let base_url = `https://webeditter.piaoquantv.com/`
- let dom = {}
- let array_file_buffer = []
- const HEADERS_TO_STRIP_LOWERCASE = [
- 'content-security-policy',
- 'x-frame-options',
- ];
- chrome.webRequest.onBeforeSendHeaders.addListener((details) => {
- let item = details.requestHeaders
- for (let i in item) {
- if (item[i].name.toLowerCase() == 'sec-fetch-dest') {
- item[i].value = 'document'
- }
- if (item[i].name.toLowerCase() == 'sec-fetch-site') {
- item[i].value = 'none'
-
- }
-
- // if (item[i].name.toLowerCase() == ':authority') {
- // console.log(item)
- // }
- // Host: chat.blockscan.com
- // Origin: https://chat.blockscan.com
- // if(){
- // }
- // SameSite=None; Secure
- }
- // details.requestHeaders = item
- // item[item.length-1].name = 'set-cookie'
- // item[item.length-1].value = 'SameSite=None; Secure'
- return { requestHeaders: item }
- }, { urls: ["<all_urls>"] }, ['blocking', 'requestHeaders']);
- chrome.webRequest.onHeadersReceived.addListener((details) => {
- let item = details.responseHeaders
- let arr= []
- for (let i in item) {
- if (!HEADERS_TO_STRIP_LOWERCASE.includes(item[i].name.toLowerCase())) {
- arr.push(item[i])
- }
- }
-
- return { responseHeaders: arr }
- }
- ,
- { urls: ["<all_urls>"] },
- ['blocking', 'responseHeaders', 'extraHeaders']);
- // 消息通讯
- chrome.runtime.onConnect.addListener(function (port) {
- port.onMessage.addListener(function (res) {
- console.log('成功:', res.index)
- switch (res.state) {
- case 'SEDN_FILE_START':
- sendFileStart(port, res)
- break
- case 'CHECK_MD5_START':
- hasAudioFileMd5(port, res.md5)
- break
- // case 'TEST_VIDEO':
- // getVideoM3d8(port)
- // break
- }
- })
- })
- function sendFileStart(port, res) {
- if (res.index == 0) {
- array_file_buffer = []
- }
- array_file_buffer.push(stringToArrayBuffer(res.buffer_str))
- if (res.end_index == res.index) {
- let file = new File(array_file_buffer, res.name, { type: res.type })
- port.postMessage({ state: 'SEDN_FILE_END', msg: 'ok' })
- uploadFile(port, file)
- }
- }
- function hasAudioFileMd5(port, md5) {
- let url = base_url + 'get_audio_file/' + md5
- // 网络请求
- let xhr = new XMLHttpRequest(); // XMLHttpRequest 对象
- xhr.open("get", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
- xhr.send()
- xhr.onreadystatechange = function () { //绑定响应状态事件监听函数
- if (xhr.readyState == 4) { //监听readyState状态
- if (xhr.status == 200 || xhr.status == 0) { //监听HTTP状态码
- let result = JSON.parse(xhr.responseText)
- port.postMessage({ state: 'CHECK_MD5_END', ...result })
- }
- }
- }
- }
- function uploadFile(port, file) {
- let start_time = new Date().getTime()
- let url = base_url + 'uploadfile'
- let xhr = new XMLHttpRequest();
- xhr.open("post", url, true); //post方式,url为服务器请求地址,true 该参数规定请求是否异步处理。
- var formData = new FormData();
- formData.append('file', file);
- xhr.upload.onprogress = (e) => {
- let end_time = new Date().getTime()
- let bili = e.loaded / e.total
- if (bili == 1) {
- port.postMessage({ state: 'UPLOAD_FILE', bili })
- }
- if (end_time > (start_time + 1000)) {
- start_time = end_time
- port.postMessage({ state: 'UPLOAD_FILE', bili })
- }
- };
- xhr.onreadystatechange = function () { //绑定响应状态事件监听函数
- if (xhr.readyState == 4) { //监听readyState状态
- if (xhr.status == 200 || xhr.status == 0) { //监听HTTP状态码
- let result = JSON.parse(xhr.responseText)
- port.postMessage({ state: 'UPLOAD_FILE_END', ...result })
- }
- }
- }
- xhr.send(formData)
- }
- function getVideoM3d8(port) {
- let path = 'http://rescdn.yishihui.com/longvideo/transcode/video/2018-11-27/6708b592fdd64be6837754c221631ec01544102390923.m3u8'
- let ts_path = 'http://rescdn.yishihui.com/longvideo/transcode/video/2018-11-27/6708b592fdd64be6837754c221631ec01544102390923-00001.ts'
- let xhr = new XMLHttpRequest();
- xhr.open('GET', ts_path);
- // 接收的是 video/mp2t 二进制数据,并且arraybuffer类型方便后续直接处理
- xhr.responseType = "arraybuffer";
- xhr.send();
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4) {
- if (xhr.status == 200) {
- let str = arrayBufferToString(xhr.response)
- port.postMessage({ state: 'TEST_VIDEO', str })
- // transferFormat(xhr.response);
- } else {
- console.log('error');
- }
- }
- }
- }
|