Не удается загрузить файл через HTTP - сеанс зависает - PullRequest
0 голосов
/ 02 мая 2019

Один мой друг сказал мне, что когда он зашел на следующий веб-сайт:
http://tatoochange.com/watch/OGgmlnav-joe-gould-s-secret/vip.html

Он заметил, что когда он проигрывал видео, на Fiddler он видел путь к файлу (http://85.217.223.24/vids/joe_goulds_secret_2000.mp4):
enter image description here

Поэтому он попытался загрузить его из браузера, но получил сообщение об ошибке:
enter image description here

Я проверял запрос GET с Burpe при воспроизведении видео :

GET /vids/joe_goulds_secret_2000.mp4 HTTP/1.1
Host: 85.217.223.24
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0
Accept: video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5
Accept-Language: en-US,en;q=0.5
Referer: http://entervideo.net/watch/3accec760b23ad4
Range: bytes=0-
Connection: close

Я преобразовал его в скрипт Python:

import requests

session = requests.Session()

headers = {"Accept":"video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5","User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0","Referer":"http://entervideo.net/watch/3accec760b23ad4","Connection":"close","Accept-Language":"en-US,en;q=0.5","Range":"bytes=0-"}
response = session.get("http://85.217.223.24/vids/joe_goulds_secret_2000.mp4", headers=headers)

print("Status code:   %i" % response.status_code)
print("Response body: %s" % response.content)

Когда я запускаюэто, это его зависание.
Я понятия не имею, скачать его или нет.

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

Ответы [ 2 ]

1 голос
/ 03 мая 2019

Использование sessions.get не рекомендуется для загрузки большого файла. Это будет в первую очередь использоваться для веб-вызова, который получает список JSON или XML. Для загрузки больших файлов вы должны выполнить метод, показанный в этой теме:

Скачать большой файл в python с запросами

0 голосов
/ 03 мая 2019

Мне удалось это сделать.
Необходимо отметить, что ответ был 206, который является частичным содержанием.

Решение:

import os,requests
def download():
    headers = {"Accept": "video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5",
               "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
               "Referer": "http://entervideo.net/watch/3accec760b23ad4", "Connection": "close",
               "Accept-Language": "en-US,en;q=0.5", "Range": "bytes=0-"}
    get_response = requests.get("http://85.217.223.24/vids/joe_goulds_secret_2000.mp4", headers=headers,stream=True)
    #file_name  = url.split("/")[-1]
    file_name = r'c:\tmp\joe_goulds_secret_2000.mp4'
    with open(file_name, 'wb') as f:
        count = 0
        for chunk in get_response.iter_content(chunk_size=1024):
            print('chunk: ' + str(count))
            count += 1
            if chunk: # filter out keep-alive new chunks
                f.write(chunk)

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