2016-10-28 1 views
3

Я получаю данные о событиях от the Mailgun API. Я могу запустить это в командной строке и получить данные обратно:HTTP-запрос эквивалент параметра `curl -user`?

curl -s --user 'api:key-xxxx' https://api.mailgun.net/v3/mydomain.net/events 

Теперь я хочу, чтобы сценарий это с Python и запросы. Я знаю, что это возможно to make a request using Basic-Auth to get the data via a URL. Однако Mailgun говорит, что ключи API следует рассматривать как пароль, поэтому я бы предпочел не раскрывать ключи API непосредственно в URL-адресах, если это возможно.

Есть ли способ, которым я могу сделать эквивалент curl --user в запросах, чтобы предоставить параметр, но не выставляя его в URL-адресе?

В качестве альтернативы, было бы лучше попытаться использовать curl непосредственно внутри Python?

+0

Куда вы хотите положить пароль, чтобы он не был выставлен? Он все равно будет в скрипте. Что заставляет вас думать, что он подвергается больше, поместив его в URL-адрес? Библиотека 'request' извлекает ее из URL-адреса и помещает в заголовок HTTP-аутентификации. – Barmar

ответ

4

просто добавьте аргумент auth=('user', 'passwd') к методу get, он должен быть кортежем с 2 строками.

my_req = requests.get('https://api.mailgun.net/v3/mydomain.net/events', auth=('user', 'pass')