Обходите проверку на наличие вирусов на Google Диске и получите подтверждающий идентификатор - PullRequest
0 голосов
/ 27 октября 2018

С некоторой помощью от этой темы Я придумал код ниже. Как я могу получить идентификатор файла Google Диска, открыть прямую ссылку на файл и получить идентификатор подтверждения проверки на вирусы, необходимый для потоковой передачи файлов размером более 100 МБ, а затем вернуть ссылку обратно? Я как бы застрял на xhr.

function fixGoogleDriveURL(url) {
  if (url.indexOf('drive.google.com') !== -1) {
    var DocIDfull = url;
    var DocIDstart = DocIDfull.indexOf('open?id=');
    if (DocIDstart == -1) {
      // invalid
      return url;
    }
    var DocID = DocIDfull.slice(DocIDstart+8);
    url = 'https://drive.google.com/uc?export=download&id=' + DocID;
    var xhr = new XMLHttpRequest();
    xhr.onload = function () {
      if (xhr.readyState === xhr.DONE) {
        if (xhr.status === 200) {
          var token = xhr.responseText.match("/confirm=([0-9A-Za-z]+)&/");
          window.location.replace(url + '&confirm=' + token[1]);
          // should I add url += '&confirm=' + token[1] here instead of window.location?
        }
      }
    };
    xhr.open("GET", url);
    xhr.send();
  }
  return url;
}
console.log(fixGoogleDriveURL('https://drive.google.com/open?id=1C25uoL6nIqqNhex3wm8VwODsO2q2pXBt') + "\n<-- should output:\nhttps://drive.google.com/uc?export=download&id=1C25uoL6nIqqNhex3wm8VwODsO2q2pXBt&confirm=XXXXX");

1 Ответ

0 голосов
/ 30 октября 2018

Очистка GDrive с использованием клиентского JavaScript явно не разрешена Google, и, следовательно, ваш вызов Ajax / XHR завершается ошибкой.

Единственный способ обойти это ограничение - использовать прокси в середине, который будетперешлите код сайта Google, но добавьте соответствующие заголовки Allow-Origin.Вы можете использовать свой собственный сервер для этого (какой-то минимальный код сценария на стороне сервера), или вы можете использовать службу типа http://multiverso.me/AllOrigins/ или https://corsproxy.github.io/ для передачи запроса за вас.

На сайте AllOrigins есть пример кода для использования с jQuery, но в основном они работают по URI, кодирующему URL-адрес, к которому вы хотите получить доступ, и добавляющему эту строку в URL-адрес прокси-сервера сайта.Вот статья freecodecamp.org, в которой рассказывается, как использовать эти сервисы (перейдите к разделу Don’t Let CORS Stop You!.

Примечание: совет по безопасности: эти сервисы работают нормально сейчас, но они могут обанкротитьсязавтра и начните вместо этого отправлять вредоносные данные или перенаправлять запросы файлов на совершенно разные файлы или на совершенно разные веб-сайты. Вам решать, хотите ли вы доверять этим незнакомцам или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...