LINUX.ORG.RU

Что делает netrc?

 


1

2

Использую библиотеку requests.

Если втыкаю auth=HTTPDigestAuth или auth=HTTPBasicAuth, то сайт выдаёт 401 ошибку, однако если скидываю логин и пароль в netrc, то сразу начинает работать. Почему оно так работает?

Ответ на: комментарий от mydibyje

А что должно быть в заголовке, почему это совсем не документировано? Разве васянский запрос это не тоже самое?

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)

«If credentials for the hostname are found, the request is sent with HTTP Basic Auth.»

Значит что-то делаешь не так.

frob ★★★★★
()
Ответ на: комментарий от frob

У меня только эти две строки и я пробовал без session.

ссылка:

https://goldsmr4.gesdisc.eosdis.nasa.gov/daac-bin/OTF/HTTP_services.cgi?FILEN...

Манул: https://goldsmr4.gesdisc.eosdis.nasa.gov/data/

И вот парадокс, netrc даёт 200 код, а васянский запрос 401.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

Тебя что, в бане загуглили? =)

requests делают так специально, чтоб твои кредсы не утекли неизвестно куда.

Если тебе критично чтобы без .netrc, то варианты есть.
В лоб – получить url, на который тебя перекидывают и сунуться туда ещё раз со своим auth.

А можно вот так: https://github.com/psf/requests/issues/2949#issuecomment-288858676

Или даже так: https://github.com/DHI-GRAS/earthdata-download/blob/master/earthdata_download/download.py#L27-L49

frob ★★★★★
()
Ответ на: комментарий от frob

А спасибо, я про про то что аутентификация через 307 код не пролазит и не знал. А простая перезапись функции однако requests. А доперло, браузер выдаёт окно с аутентификацией уже после получения 307 кода.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 3)
Ответ на: комментарий от steemandlinux

Ну, судя по обсуждению когда-то она пролазила и это плохо кончалось. Практически, если ты руками тупо берёшь присланный в редиректе URL и слепо лезешь туда со своим auth, то ты соглашаешься на то, что auth может улететь неизвестно куда.

Так что «по-хорошему» без .netrc надо реализовывать аналогичное поведение: смотреть есть ли у тебя данные для auth для конкретного домена/URL-а.

frob ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.