Wget/curl большой файл с Google Диска

Я пытаюсь загрузить файл с диска Google в script, и у меня есть небольшая проблема с этим. Файлы, которые я пытаюсь загрузить, здесь.

Я посмотрел онлайн в экстенсивно, и, наконец, мне удалось загрузить один из них. Я получил UID файлов, а меньшая (1.6MB) загрузка прекрасна, однако более крупный файл (3,7 ГБ) всегда перенаправляет на страницу, которая спрашивает меня, хочу ли я продолжить загрузку без сканирования вирусов. Может кто-нибудь помочь мне пройти мимо этого экрана?

Вот как я получил первый файл -

curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYeDU0VDRFWG9IVUE" > phlat-1.0.tar.gz

Когда я запускаю то же самое в другом файле,

curl -L "https://docs.google.com/uc?export=download&id=0Bz-w5tutuZIYY3h5YlMzTjhnbGM" > index4phlat.tar.gz

Я получаю следующий вывод: введите описание изображения здесь

Я заметил в третьей строке ссылки, там &confirm=JwkK, которая является случайной строкой из 4 символов, но предлагает найти способ добавления подтверждения к моему URL. Одна из ссылок, которые я посетил, предложил &confirm=no_antivirus, но это не работает.

Я надеюсь, что кто-то здесь поможет в этом!

Спасибо заранее.

Ответ 1

Посмотрите на этот вопрос: прямая загрузка с Google Диска с помощью API Google Диска

В основном вам нужно создать общедоступный каталог и получить доступ к вашим файлам по относительной ссылке с чем-то вроде

wget https://googledrive.com/host/LARGEPUBLICFOLDERID/index4phlat.tar.gz

ПРЕДУПРЕЖДЕНИЕ. Эта функция устарела. См. Предупреждение ниже в комментариях.

Кроме того, вы можете использовать этот скрипт: https://github.com/circulosmeos/gdown.pl

Ответ 2

Я написал фрагмент Python, который загружает файл с Google Диска, предоставляя ссылку для совместного использования. Работает с августа 2017 года.

Отрезанный не использует ни gdrive, ни Google Drive API. Он использует модуль запросов.

При загрузке больших файлов с Google Диска одного запроса GET недостаточно. Необходим второй, и у него есть дополнительный параметр URL, называемый подтверждающим, значение которого должно равняться значению определенного cookie.

import requests

def download_file_from_google_drive(id, destination):
    def get_confirm_token(response):
        for key, value in response.cookies.items():
            if key.startswith('download_warning'):
                return value

        return None

    def save_response_content(response, destination):
        CHUNK_SIZE = 32768

        with open(destination, "wb") as f:
            for chunk in response.iter_content(CHUNK_SIZE):
                if chunk: # filter out keep-alive new chunks
                    f.write(chunk)

    URL = "https://docs.google.com/uc?export=download"

    session = requests.Session()

    response = session.get(URL, params = { 'id' : id }, stream = True)
    token = get_confirm_token(response)

    if token:
        params = { 'id' : id, 'confirm' : token }
        response = session.get(URL, params = params, stream = True)

    save_response_content(response, destination)    


if __name__ == "__main__":
    import sys
    if len(sys.argv) is not 3:
        print("Usage: python google_drive.py drive_file_id destination_file_path")
    else:
        # TAKE ID FROM SHAREABLE LINK
        file_id = sys.argv[1]
        # DESTINATION FILE ON YOUR DISK
        destination = sys.argv[2]
        download_file_from_google_drive(file_id, destination)

Ответ 3

Сентябрь 2019 года

file_id должен выглядеть примерно так: 0Bz8a_Dbh9QhbNU3SGlFaDg

Вы можете получить его, щелкнув правой кнопкой мыши на файле, а затем Получить ссылку общего доступа. Проверено на файлы открытого доступа. Не работает для каталогов. Проверено на Google Colab.

Пример: загрузить файл readme из этого каталога

gdown https://drive.google.com/uc?id=0B7EVK8r0v71pOXBhSUdJWU1MYUk

Ответ 4

Вы можете использовать инструмент командной строки Linux/Unix с открытым исходным кодом gdrive.

Чтобы установить его:

  1. Загрузите двоичный файл. Выберите тот, который соответствует вашей архитектуре, например gdrive-linux-x64.

  2. Скопируйте его на свой путь.

    sudo cp gdrive-linux-x64 /usr/local/bin/gdrive;
    sudo chmod a+x /usr/local/bin/gdrive;
    

Чтобы использовать это:

  1. Определите идентификатор файла на Google Диске. Для этого щелкните правой кнопкой мыши нужный файл на веб-сайте Google Диска и выберите "Получить ссылку…". Он вернет что-то вроде https://drive.google.com/open?id=0B7_OwkDsUIgFWXA1B2FPQfV5S8H. Получите строку за ?id= и скопируйте ее в буфер обмена. Это идентификатор файла.

  2. Загрузите файл. Конечно, вместо этого используйте свой идентификатор файла в следующей команде.

    gdrive download 0B7_OwkDsUIgFWXA1B2FPQfV5S8H
    

При первом использовании инструменту необходимо получить разрешения на доступ к API Google Диска. Для этого он покажет вам ссылку, которую вы должны посетить в браузере, а затем вы получите проверочный код для копирования и вставки обратно в инструмент. Загрузка начнется автоматически. Индикатор прогресса отсутствует, но вы можете наблюдать за прогрессом в файловом менеджере или на втором терминале.

Источник: КомментарийТоби к другому ответу здесь.

  Дополнительный трюк: ограничение скорости. Для загрузки с gdrive с ограниченной максимальной скоростью (чтобы не перегружать сеть…) вы можете использовать такую команду (pv - это PipeViewer):

gdrive download --stdout 0B7_OwkDsUIgFWXA1B2FPQfV5S8H | \
  pv -br -L 90k | \
  cat > file.ext

Это покажет количество загруженных данных (-b) и скорость загрузки (-r) и ограничит эту скорость до 90 кБ/с (-L 90k).

Ответ 5

ggID='put_googleID_here'  
ggURL='https://drive.google.com/uc?export=download'  
filename="$(curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" | grep -o '="uc-name.*</span>' | sed 's/.*">//;s/<.a> .*//')"  
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"  
curl -Lb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" -o "${filename}"  

Как это работает?
Получить файл cookie и html-код с помощью curl.
Pipe html в grep и sed и поиск имени файла.
Получить код подтверждения из файла cookie с awk.
Наконец, загрузите файл с включенным cookie, подтвердите код и имя файла.

curl -Lb /tmp/gcokie "https://drive.google.com/uc?export=download&confirm=Uq6r&id=0B5IRsLTwEO6CVXFURmpQZ1Jxc0U" -o "SomeBigFile.zip"

Если вам не нужна переменная имени, переменная curl может угадать ее
-L Следить за переадресацией
-O Удаленное имя
-J Удаленное имя-заголовка

curl -sc /tmp/gcokie "${ggURL}&id=${ggID}" >/dev/null  
getcode="$(awk '/_warning_/ {print $NF}' /tmp/gcokie)"  
curl -LOJb /tmp/gcokie "${ggURL}&confirm=${getcode}&id=${ggID}" 

Чтобы извлечь идентификатор файла google из URL-адреса, вы можете использовать:

echo "gURL" | egrep -o '(\w|-){26,}'  
# match more than 26 word characters  

ИЛИ

echo "gURL" | sed 's/[^A-Za-z0-9_-]/\n/g' | sed -rn '/.{26}/p'  
# replace non-word characters with new line,   
# print only line with more than 26 word characters 

Ответ 6

Дополнение от марта 2018.

Я пробовал различные методы, приведенные в других ответах, чтобы загрузить мой файл (6 ГБ) непосредственно с диска Google в мой экземпляр AWS ec2, но ни один из них не работает (возможно, потому, что он старый).

Итак, для информации других, вот как я сделал это успешно:

  1. Щелкните правой кнопкой мыши по файлу, который вы хотите загрузить, щелкните "Поделиться", в разделе "Обмен ссылками" выберите "любой пользователь, имеющий эту ссылку, может редактировать".
  2. Скопируйте ссылку. Он должен быть в следующем формате: https://drive.google.com/file/d/FILEIDENTIFIER/view?usp=sharing
  3. Скопируйте часть FILEIDENTIFIER из ссылки.
  4. Скопируйте приведенный ниже скрипт в файл. Он использует curl и обрабатывает cookie для автоматизации загрузки файла.

    #!/bin/bash
    fileid="FILEIDENTIFIER"
    filename="FILENAME"
    curl -c ./cookie -s -L "https://drive.google.com/uc?export=download&id=${fileid}" > /dev/null
    curl -Lb ./cookie "https://drive.google.com/uc?export=download&confirm='awk '/download/ {print $NF}' ./cookie'&id=${fileid}" -o ${filename}
    
  5. Как показано выше, вставьте ФАЙЛИДЕНТИФИКАТОР в скрипт. Не забудьте сохранить двойные кавычки!

  6. Укажите имя файла вместо FILENAME. Не забудьте сохранить двойные кавычки, а также включить расширение в FILENAME (например, myfile.zip).
  7. Теперь сохраните файл и сделайте его исполняемым, выполнив эту команду в терминале sudo chmod +x download-gdrive.sh.
  8. Запустите скрипт, используя './download-gdrive.sh ".

PS: Вот суть Github для приведенного выше сценария: https://gist.github.com/amit-chahar/db49ce64f46367325293e4cce13d2424

Ответ 7

Поведение Google по умолчанию для сканирования файлов для вирусов, если файл большой, подскажет пользователю и сообщит ему, что файл не может быть отсканирован.

В настоящий момент единственным обходным решением, которое я нашел, является совместное использование файла в Интернете и создание веб-ресурса.

Цитата из справочной страницы Google:

С помощью Drive вы можете создавать веб-ресурсы, такие как HTML, CSS и Javascript файлы, которые можно просматривать как веб-сайт.

Чтобы разместить веб-страницу с помощью Диска:

  • Откройте диск на drive.google.com и выберите файл.
  • Нажмите кнопку Поделиться в верхней части страницы.
  • Нажмите Дополнительно в правом нижнем углу окна совместного доступа.
  • Нажмите Изменить....
  • Выберите Вкл. - Публикация в Интернете и нажмите Сохранить.
  • Перед закрытием окна совместного доступа скопируйте идентификатор документа из URL-адреса в поле "Ссылка на общий доступ". Идентификатор документа представляет собой строку прописных и строчных букв и цифр между косой чертой в URL-адресе.
  • Поделитесь URL-адресом, который выглядит как "www.googledrive.com/host/[doc id], где [doc id] заменен идентификатором документа, который вы скопировали на шаге 6.
    Теперь вы можете просматривать веб-страницу.

Найдено здесь: https://support.google.com/drive/answer/2881970?hl=en

Так, например, когда вы публично делитесь файлом на Google Диске, sharelink выглядит так:

https://drive.google.com/file/d/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U/view?usp=sharing

Затем вы копируете идентификатор файла и создаете ссылку googledrive.com, которая выглядит так:

https://www.googledrive.com/host/0B5IRsLTwEO6CVXFURmpQZ1Jxc0U

Ответ 8

Вот быстрый способ сделать это.

Убедитесь, что ссылка является общей, и она будет выглядеть примерно так:

https://drive.google.com/open?id=FILEID&authuser=0

Затем скопируйте этот FILEID и используйте его следующим образом

wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O FILENAME

Ответ 9

Простой способ:

(если вам это нужно только для одноразовой загрузки)

  • Перейдите на веб-страницу Google Диска, в которой есть ссылка для загрузки.
  • Откройте консоль браузера и перейдите на вкладку "Сеть".
  • Нажмите ссылку для скачивания
  • Подождите, пока файл начнет загрузку, и найдите соответствующий запрос (должен быть последним в списке), затем вы можете отменить загрузку
  • Щелкните правой кнопкой мыши запрос и нажмите "Скопировать как cURL" (или аналогичный).

У вас должно получиться что-то вроде:

curl 'https://doc-0s-80-docs.googleusercontent.com/docs/securesc/aa51s66fhf9273i....................blah blah blah...............gEIqZ3KAQ==' --compressed

Пропустите его в консоли, добавьте > my-file-name.extension в конец (иначе он будет записывать файл в вашу консоль), а затем нажмите enter:)

Ответ 10

На основании ответа Рошана Сетии

Май 2018 г.

Использование WGET:

  1. Создайте сценарий оболочки wgetgdrive.sh, как показано ниже:

    #!/bin/bash
    
    # Get files from Google Drive
    
    # $1 = file ID
    # $2 = file name
    
    URL="https://docs.google.com/uc?export=download&id=$1"
    
    wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate $URL -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=$1" -O $2 && rm -rf /tmp/cookies.txt
    
  2. Дайте правильные разрешения для выполнения скрипта

  3. В терминале выполните:

    ./wgetgdrive.sh <file ID> <filename>
    

    например:

    ./wgetgdrive.sh 1lsDPURlTNzS62xEOAIG98gsaW6x2PYd2 images.zip
    

Ответ 11

--UPDATED--

Чтобы скачать файл, сначала получите youtube-dl для python здесь:

youtube-dl: https://rg3.github.io/youtube-dl/download.html

или установите его с помощью pip:

sudo python2.7 -m pip install --upgrade youtube_dl 
# or 
# sudo python3.6 -m pip install --upgrade youtube_dl

UPDATE:

Я только что узнал это:

  1. Щелкните правой кнопкой мыши файл, который хотите загрузить с drive.google.com

  2. .Нажмите Get Sharable link

  3. Включить Link sharing on

  4. Нажмите на Sharing settings

  5. Нажмите в верхнем раскрывающемся списке для выбора вариантов

  6. Нажмите Подробнее

  7. Выберите [x] On - Anyone with a link

  8. Скопировать ссылку

https://drive.google.com/file/d/3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR/view?usp=sharing       
(This is not a real file address)

Скопируйте идентификатор после https://drive.google.com/file/d/:

3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR

Вставьте это в командную строку:

youtube-dl https://drive.google.com/open?id=

Вставьте идентификатор позади open?id=

youtube-dl https://drive.google.com/open?id=3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Downloading webpage
[GoogleDrive] 3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR: Requesting source file
[download] Destination: your_requested_filename_here-3PIY9dCoWRs-930HHvY-3-FOOPrIVoBAR
[download] 240.37MiB at  2321.53MiB/s (00:01)

Надеюсь, это поможет

Ответ 12

Ни один ответ не предлагает, что работает для меня как декабрь 2016 (источник):

curl -L https://drive.google.com/uc?id={FileID}

при условии, что файл Google Диска был разделен с теми, у кого есть ссылка, а {FileID} - строка за ?id= в общем URL-адресе.

Хотя я не проверял огромные файлы, я считаю, что это может быть полезно знать.

Ответ 13

У меня была такая же проблема с Google Диском.

Вот как я решил проблему, используя Ссылки 2.

  • Откройте браузер на своем ПК, перейдите к файлу на Google Диске. Дайте вашему файлу общедоступную ссылку.

  • Скопируйте общедоступную ссылку в буфер обмена (например, щелкните правой кнопкой мыши, Скопируйте адрес ссылки)

  • Откройте терминал. Если вы загружаете на другой компьютер/сервер/машину, вы должны использовать SSH в качестве этой точки

  • Установите ссылки 2 (метод debian/ubuntu, используйте свой дистрибутив или эквивалент ОС)

    sudo apt-get install links2

  • Вставьте ссылку в свой терминал и откройте ее с помощью таких ссылок:

    links2 "paste url here"

  • Перейдите к ссылке загрузки в ссылках с помощью клавиш со стрелками и нажмите Enter

  • Выберите имя файла, и он загрузит ваш файл

Ответ 14

Самый простой способ:

  1. Создайте ссылку для скачивания и скопируйте идентификатор файла
  2. Скачать с WGET: wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=FILEID' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=FILEID" -O FILENAME && rm -rf /tmp/cookies.txt

Ответ 15

Используйте YouTube-DL !

youtube-dl https://drive.google.com/open?id=ABCDEFG1234567890

Вы также можете передать --get-url чтобы получить --get-url для прямой загрузки.

Ответ 16

Там есть многоплатформенный клиент с открытым исходным кодом, написанный на Go: drive. Это довольно хорошо и полнофункционально, а также активно развивается.

$ drive help pull
Name
        pull - pulls remote changes from Google Drive
Description
        Downloads content from the remote drive or modifies
         local content to match that on your Google Drive

Note: You can skip checksum verification by passing in flag `-ignore-checksum`

* For usage flags: `drive pull -h`

Ответ 17

Мне не удалось заставить Nanoix perl script работать, или другие примеры скручивания, которые я видел, поэтому я начал изучать api самостоятельно в python. Это отлично работало для небольших файлов, но большие файлы задыхались от доступного бара, поэтому я нашел еще один приятный код, который использует api для частичной загрузки. Вот здесь: https://gist.github.com/csik/c4c90987224150e4a0b2

Обратите внимание на бит о загрузке json файла client_secret из интерфейса API в ваш локальный каталог.

Источник
$ cat gdrive_dl.py
from pydrive.auth import GoogleAuth  
from pydrive.drive import GoogleDrive    

"""API calls to download a very large google drive file.  The drive API only allows downloading to ram 
   (unlike, say, the Requests library streaming option) so the files has to be partially downloaded
   and chunked.  Authentication requires a google api key, and a local download of client_secrets.json
   Thanks to Radek for the key functions: http://stackoverflow.com/questions/27617258/memoryerror-how-to-download-large-file-via-google-drive-sdk-using-python
"""

def partial(total_byte_len, part_size_limit):
    s = []
    for p in range(0, total_byte_len, part_size_limit):
        last = min(total_byte_len - 1, p + part_size_limit - 1)
        s.append([p, last])
    return s

def GD_download_file(service, file_id):
  drive_file = service.files().get(fileId=file_id).execute()
  download_url = drive_file.get('downloadUrl')
  total_size = int(drive_file.get('fileSize'))
  s = partial(total_size, 100000000) # I'm downloading BIG files, so 100M chunk size is fine for me
  title = drive_file.get('title')
  originalFilename = drive_file.get('originalFilename')
  filename = './' + originalFilename
  if download_url:
      with open(filename, 'wb') as file:
        print "Bytes downloaded: "
        for bytes in s:
          headers = {"Range" : 'bytes=%s-%s' % (bytes[0], bytes[1])}
          resp, content = service._http.request(download_url, headers=headers)
          if resp.status == 206 :
                file.write(content)
                file.flush()
          else:
            print 'An error occurred: %s' % resp
            return None
          print str(bytes[1])+"..."
      return title, filename
  else:
    return None          


gauth = GoogleAuth()
gauth.CommandLineAuth() #requires cut and paste from a browser 

FILE_ID = 'SOMEID' #FileID is the simple file hash, like 0B1NzlxZ5RpdKS0NOS0x0Ym9kR0U

drive = GoogleDrive(gauth)
service = gauth.service
#file = drive.CreateFile({'id':FILE_ID})    # Use this to get file metadata
GD_download_file(service, FILE_ID) 

Ответ 18

Вот обходной путь, который я придумал для загрузки файлов с Google Диска в оболочку Google Cloud Linux.

  • Поделитесь файлом с PUBLIC и с правами на редактирование, используя расширенный доступ.
  • Вы получите ссылку для совместного доступа, которая будет иметь идентификатор. См. Ссылку: - drive.google.com/file/d/[ID]/вид? УСП = совместное использование данных
  • Скопируйте этот идентификатор и вставьте его по следующей ссылке: -

googledrive.com/host/[ID]

  1. Вышеупомянутая ссылка будет нашей ссылкой для скачивания.
  2. Используйте wget для загрузки файла: -

wget https://googledrive.com/host/[ID]

  1. Эта команда загрузит файл с именем как [ID] без расширения и с тем же размером файла в том же месте, где вы запустили команду wget.
  2. На самом деле, я загрузил папку с zip файлами в свою практику. поэтому я переименовал этот неудобный файл, используя: -

mv [ID] 1.zip

  1. затем используя

unzip 1.zip

мы получим файлы.

Ответ 19

Вот немного bash script Я написал, что делает эту работу сегодня. Он работает с большими файлами и может также возобновлять частично извлеченные файлы. Он принимает два аргумента, первый - file_id, а второй - имя выходного файла. Основные улучшения по сравнению с предыдущими ответами здесь состоят в том, что он работает с большими файлами и требует только общедоступных инструментов: bash, curl, tr, grep, du, cut и mv.

#!/usr/bin/env bash
fileid="$1"
destination="$2"

# try to download the file
curl -c /tmp/cookie -L -o /tmp/probe.bin "https://drive.google.com/uc?export=download&id=${fileid}"
probeSize=`du -b /tmp/probe.bin | cut -f1`

# did we get a virus message?
# this will be the first line we get when trying to retrive a large file
bigFileSig='<!DOCTYPE html><html><head><title>Google Drive - Virus scan warning</title><meta http-equiv="content-type" content="text/html; charset=utf-8"/>'
sigSize=${#bigFileSig}

if (( probeSize <= sigSize )); then
  virusMessage=false
else
  firstBytes=$(head -c $sigSize /tmp/probe.bin)
  if [ "$firstBytes" = "$bigFileSig" ]; then
    virusMessage=true
  else
    virusMessage=false
  fi
fi

if [ "$virusMessage" = true ] ; then
  confirm=$(tr ';' '\n' </tmp/probe.bin | grep confirm)
  confirm=${confirm:8:4}
  curl -C - -b /tmp/cookie -L -o "$destination" "https://drive.google.com/uc?export=download&id=${fileid}&confirm=${confirm}"
else
  mv /tmp/probe.bin "$destination"
fi

Ответ 20

Это работает с ноября 2017 года https://gist.github.com/ppetraki/258ea8240041e19ab258a736781f06db

#!/bin/bash

SOURCE="$1"
if [ "${SOURCE}" == "" ]; then
    echo "Must specify a source url"
    exit 1
fi

DEST="$2"
if [ "${DEST}" == "" ]; then
    echo "Must specify a destination filename"
    exit 1
fi

FILEID=$(echo $SOURCE | rev | cut -d= -f1 | rev)
COOKIES=$(mktemp)

CODE=$(wget --save-cookies $COOKIES --keep-session-cookies --no-check-certificate "https://docs.google.com/uc?export=download&id=${FILEID}" -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/Code: \1\n/p')

# cleanup the code, format is 'Code: XXXX'
CODE=$(echo $CODE | rev | cut -d: -f1 | rev | xargs)

wget --load-cookies $COOKIES "https://docs.google.com/uc?export=download&confirm=${CODE}&id=${FILEID}" -O $DEST

rm -f $COOKIES

Ответ 21

Вам просто нужно использовать wget с:

 https://drive.google.com/uc?authuser=0&id=[your ID without brackets]&export=download

Оплаченный Файл должен быть общедоступным.

Ответ 22

После возни с этим мусором. Я нашел способ загрузить мой сладкий файл с помощью инструментов разработчика Chrome.

  1. На вкладке "Документы" Google Ctr + Shift + J (Настройка → Инструменты разработчика)
  2. Переключиться на вкладки сети
  3. В файле документации нажмите "Загрузить" → Загрузить как CSV, xlsx,....
  4. Он покажет вам запрос в "Сетевой" консоли enter image description here

  5. Щелкните правой кнопкой мыши → Копировать → Копировать как завиток

  6. Ваша команда Curl будет такой, и добавьте -o чтобы создать экспортированный файл. curl 'https://docs.google.com/spreadsheets/d/1Cjsryejgn29BDiInOrGZWvg/export?format=xlsx&id=1Cjsryejgn29BDiInOrGZWvg' -H 'authority: docs.google.com' -H 'upgrade-insecure-requests: 1' -H 'user-agent: Mozilla/5.0 (X..... -o server.xlsx

Решено!

Ответ 23

Я нашел рабочее решение для этого... Просто используйте следующие

wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1HlzTR1-YVoBPlXo0gMFJ_xY4ogMnfzDi" -O besteyewear.zip && rm -rf /tmp/cookies.txt

Ответ 24

Май 2018 РАБОТА

Привет на основе этих комментариев... Я создаю bash для экспорта списка URL из файла URLS.txt в URLS_DECODED.txt, который используется в каком-то ускорителе, таком как flashget (я использую cygwin для объединения окон и Linux)

Командный паук был введен, чтобы избежать загрузки и получить окончательную ссылку (напрямую)

Команда GREP HEAD и CUT, обрабатывают и получают финальную ссылку, базируются на испанском языке, возможно, вы могли бы стать портом для АНГЛИЙСКОГО ЯЗЫКА

echo -e "$URL_TO_DOWNLOAD\r" возможно, \r является только cywin и должен быть заменен на \n (строка прерывания)

**********user*********** - это папка пользователя

*******Localización*********** находится на испанском языке, очищает звёзды и дает слово на английском языке. Место и адаптируйте номера HEAD и CUT к подходящему подходу.

rm -rf /home/**********user***********/URLS_DECODED.txt
COUNTER=0
while read p; do 
    string=$p
    hash="${string#*id=}"
    hash="${hash%&*}"
    hash="${hash#*file/d/}"
    hash="${hash%/*}"
    let COUNTER=COUNTER+1
    echo "Enlace "$COUNTER" id="$hash
    URL_TO_DOWNLOAD=$(wget --spider --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id='$hash -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id="$hash 2>&1 | grep *******Localización***********: | head -c-13 | cut -c16-)
    rm -rf /tmp/cookies.txt
    echo -e "$URL_TO_DOWNLOAD\r" >> /home/**********user***********/URLS_DECODED.txt
    echo "Enlace "$COUNTER" URL="$URL_TO_DOWNLOAD
done < /home/**********user***********/URLS.txt

Ответ 25

Там более простой способ.

Установите cliget/CURLWGET из расширения firefox/chrome.

Загрузите файл из браузера. Это создает ссылку curl/wget, которая запоминает файлы cookie и заголовки, используемые при загрузке файла. Используйте эту команду из любой оболочки для загрузки

Ответ 26

skicka - это инструмент cli для загрузки, загрузки файлов доступа с Google-диска.

пример -

skicka download /Pictures/2014 ~/Pictures.copy/2014
10 / 10 [=====================================================] 100.00 % 
skicka: preparation time 1s, sync time 6s
skicka: updated 0 Drive files, 10 local files
skicka: 0 B read from disk, 16.18 MiB written to disk
skicka: 0 B uploaded (0 B/s), 16.18 MiB downloaded (2.33 MiB/s)
skicka: 50.23 MiB peak memory used

Ответ 27

Май 2018 г.

Если вы хотите использовать curl для загрузки файла с Google Диска, в дополнение к идентификатору файла на диске вам также понадобится access_token access_token для API Google Диска. Получение маркера включает в себя несколько шагов с картой Google API. Шаги регистрации с Google (в настоящее время) бесплатны.

OAuth2 access_token потенциально допускает все виды деятельности, поэтому будьте осторожны с ним. Кроме того, токен истекает через короткое время (1 час?), Но не достаточно короткий, чтобы предотвратить злоупотребление, если кто-то его фиксирует.

Если у вас есть access_token и fileid, это будет работать:

AUTH="Authorization: Bearer the_access_token_goes_here"
FILEID="fileid_goes_here"
URL=https://www.googleapis.com/drive/v3/files/$FILEID?alt=media
curl --header "$AUTH" $URL >myfile.ext

См. Также: API-интерфейсы Google Диска - REST - Загрузка файлов

Ответ 28

Получите доступную ссылку и откройте ее в инкогнито (очень важно). Он скажет, что он не может сканировать.

Открытый инспектор и отслеживание сетевого трафика. Нажмите кнопку "Загрузить в любом случае".

Скопируйте URL-адрес последнего выполненного запроса. Это ваша ссылка. Используйте его в wget.

Ответ 29

Я сделал это с помощью скрипта Python и API Google Drive, вы можете попробовать этот фрагмент:

//using chunk download

file_id = 'someid'
request = drive_service.files().get_media(fileId=file_id)
fh = io.BytesIO()
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
    status, done = downloader.next_chunk()
    print "Download %d%%." % int(status.progress() * 100)

Ответ 30

Начиная с версии Chrome 75.0.3770.142, самый простой способ, который я нашел, - просто начать загрузку файла. Затем откройте вкладку загрузок, нажав Показать все в нижней части окна или в строке меню нажмите Окно → Загрузки (shift + cmd + j). Download page tab

Появится страница со всеми загрузками. Прямо под заголовком файла на диске Google находится прямая ссылка для скачивания, которую можно просто скопировать и использовать с wget.