GermanW
@GermanW

Как реализовать в python 3 загрузку файла с базовой авторизацией http?

Здравствуйте
У меня следующая проблема: мне нужно скачать по url файл с сервера http, но он под http basic auth.
Если я браузером перехожу по ссылке вида:
http://'login':'pass'@moyserver.com/file.file
Файл скачивается, если же в скрипте:
import urllib.request
serv = 'мой сервер'
Username = 'логин'
Password = 'пароль'
file='полный адрес файла(с директорией)'
site='http://'+Username+':'+Password+'@'+serv+file
n=file.split('/')#Не уверен что красиво, но позволяет быстро отделить имя файла
file=n[-1] 
def load(filename,site):
    with urllib.request.urlopen(site) as url:
     s = url.read()
    f = open(filename, "wb")
    f.write(s)
    f.close()
 load(file,site)


Скрипт выдает ошибку(пароль пытается использовать как порт подключения).
Я нашел рецепты для 2.6, но никак не могу понять как мне это реализовать в 3
Я только осваиваю змею, и буду признателен за советы куда копать.
  • Вопрос задан
  • 5777 просмотров
Решения вопроса 1
@s0L
Очень просто
request = Request("http://your_site.ru")
auth = b64encode(bytes("user:password", "ascii")).decode("ascii")
request.add_header("Authorization", "Basic %s" % auth)
response = urlopen(request)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
GermanW
@GermanW Автор вопроса
Спасибо за помощь, @AMar4enko мне надо и впрямь разобраться с тем что вы мне дали... но пока тяжеловато. @s0L ваш ответ именно в точку, остальные спасибо за старания, но пожалуйста читайте внимательнее текст вопроса.
Благодарю за помощь. German White
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы