HTTP дайджест аутентификации python

Моя цель - получить доступ к веб-сайту, который использует HTTP-аутентификацию с использованием python. Я могу открыть веб-сайт из своего веб-браузера, и заголовок говорит мне, что я должен использовать HTTBDigestAuth:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.5
Authorization: Digest username = "user", realm = "CG Downloads", nonce = "cTN0pKxqBQA=e46ad250f42f73e9076ebc97c417f0d38bac094a", uri = "/fileadmin/teaching/2017/WS/adip/exercises/adip-uebung-00-.pdf", algorithm=MD5, response = "5a57ddbcd1b20444100a91b1967a2782", qop=auth, nc=00000001, cnonce = "5a6b041b4113bb9a"
Connection: keep-alive
Cookie: fe_typo_user=76b7e7e25372f782d94e91b51b854568
Host: cg.cs.uni-bonn.de
Referer: http://cg.cs.uni-bonn.de/de/lehre/ws-2017/vorlesung-algorithmisches-denken-und-imperative-programmierung/
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:59.0) Gecko/20100101 Firefox/59.0

Однако, когда я пытаюсь перейти на страницу с помощью запросов и HTTPDigestAuth, я получаю в ответ «401 Unauthorized».

import logging
import requests
from requests.auth import HTTPDigestAuth

try:
    import httplib
except ImportError:
    import http.client as httplib

httplib.HTTPConnection.debuglevel = 1

logging.basicConfig(level=logging.DEBUG) 

url = 'http://cg.cs.uni-bonn.de/fileadmin/teaching/2017/WS/adip/exercises/adip-uebung-00-.pdf'
response = requests.get(url, auth=HTTPDigestAuth('user', 'pass'),
                 timeout=10)
print(response.status_code)
print(response.headers)
print(r.text)

Я использую неправильный метод авторизации или мой код неправильный? Я ценю любую помощь, которую вы можете мне оказать.

Обновлено: Я пытаюсь получить доступ к сайтам на cg.cs.uni-bonn.de, например http://cg.cs.uni-bonn.de/fileadmin/teaching/2017/WS/adip/exercises/adip-uebung-00-.pdf

вы можете опубликовать URL?

WildCard 26.04.2018 07:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
1
1 557
1

Ответы 1

Вам просто нужно передать значения в auth=HTTPDigestAuth('user', 'pass') следующим образом:

user = 'admin'    # change to your username
pass = '123456'    # change to your password
...
response = requests.get(url, auth=HTTPDigestAuth(user, pass),
             timeout=10)
...

Другие вопросы по теме