В моем расширении chrome я блокирую загрузки пользователя, и я загружаю файлы на какой-то другой компьютер (какое-то приложение безопасности, но оно не бессильно для публикации) на основе URL-адреса загрузки.
идея отлично работает во многих случаях, например, если пользователь пытается загрузить файл http://www.orimi.com/pdf-test.pdf в своем браузере chrome, расширение блокирует загрузку, отправляет URL-адрес на какой-то другой сервер и сервер загружает ссылку.
У меня проблема с веб-сайтами, которые запрашивают некоторые заголовки при загрузке файла, есть ли способ передать c точный chrome запрос из другого приложения?
Я попытался использовать chrome.webRequest.onBeforeSendHeaders.addListener
, чтобы получить все заголовки запросов, а затем использовать эти заголовки для загрузки файла из другого места (я имею в виду не через chrome, а через poatman), и я получил Unauthorized
Вот небольшой код пример в сценарии bacgroung:
chrome.downloads.onCreated.addListener(function (e) {
console.log(`============= begin onCreated =============`);
console.log(e);
console.log(`============= end onCreated =============`);
});
chrome.webRequest.onBeforeSendHeaders.addListener(
function (details) {
console.log(`============= begin onBeforeSendHeaders =============`);
console.log(details);
console.log(`============= end onBeforeSendHeaders =============`);
return {
requestHeaders: details.requestHeaders
};
}, {
urls: ["<all_urls>"]
},
["blocking", "requestHeaders"]);
И когда я пытаюсь загрузить файл из LinkedIn, я получаю вывод:
============= begin onBeforeSendHeaders =============
background.js:27 {frameId: 0, initiator: "https://www.linkedin.com", method: "GET", parentFrameId: -1, requestHeaders: Array(7), …}frameId: 0initiator: "https://www.linkedin.com"method: "GET"parentFrameId: -1requestHeaders: Array(7)0: {name: "Upgrade-Insecure-Requests", value: "1"}1: {name: "User-Agent", value: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWeb…ML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}2: {name: "Accept", value: "text/html,application/xhtml+xml,application/xml;q=…,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"}3: {name: "Sec-Fetch-Site", value: "same-origin"}4: {name: "Sec-Fetch-Mode", value: "navigate"}5: {name: "Sec-Fetch-User", value: "?1"}6: {name: "Sec-Fetch-Dest", value: "document"}length: 7__proto__: Array(0)requestId: "305371"tabId: 844timeStamp: 1596530356040.051type: "main_frame"url: "https://www.linkedin.com/dms/C4D06AQGz1fU0o0r3ZQ/messaging-attachmentFile/0?m=AQLmTdbXe5dgKgAAAXO4axnTdJJLiaU6EnZbq_fhQzg_1697ToPaTbJ3jw&ne=1&v=beta&t=QCDqVeorWfXEAgQBCQdo9hbEQrxwM97zqzCvLuBE2Cw#S6555100544749322240_500"__proto__: Object
background.js:28 ============= end onBeforeSendHeaders =============
background.js:20 ============= begin onCreated =============
background.js:21 {bytesReceived: 0, canResume: false, danger: "safe", exists: true, fileSize: 0, …}bytesReceived: 0canResume: falsedanger: "safe"exists: truefileSize: 0filename: ""finalUrl: "https://www.linkedin.com/dms/D5D06AQGz1fU0o0r3ZK/messaging-attachmentFile/0?m=AQLpTdbXe5dgKgAAAXO4axnTdJJLiaU6EnZbe_fhQzg_1697ToPaTbJ3jw&ne=1&v=beta&t=QCDqVeorWfXEAgQBCQdo9hbEQrxwM97zqzCvLuBE2Cw#S6555100544749322246_500"id: 7100incognito: falsemime: "application/octet-stream"paused: falsereferrer: "https://www.linkedin.com/in/natali-melman-a785a349/"startTime: "2020-08-04T08:39:16.060Z"state: "in_progress"totalBytes: 0url: "https://www.linkedin.com/dms/D5D06AQGz1fU0o0r3ZK/messaging-attachmentFile/0?m=AQLpTdbXe5dgKgAAAXO4axnTdJJLiaU6EnZbe_fhQzg_1697ToPaTbJ3jw&ne=1&v=beta&t=QCDqVeorWfXEAgQBCQdo9hbEQrxwM97zqzCvLuBE2Cw#S6555100544749322256_500"__proto__: Object
background.js:22 ============= end onCreated =============
Я пытался mimi c this точный запрос в почтальоне (тот же заголовок, параметры и т.д. c), но я получаю код ошибки 401