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
Я только осваиваю змею, и буду признателен за советы куда копать.
  • Вопрос задан
  • 5820 просмотров
Решения вопроса 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
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы