Hướng dẫn basic auth python requests post - bài đăng yêu cầu python auth cơ bản

Cách làm sạch nhất để làm bài đăng http với cơ bản trong python là gì?

Chỉ sử dụng các lõi Python.

Đã hỏi ngày 6 tháng 6 năm 2011 lúc 18:00Jun 6, 2011 at 18:00

Hướng dẫn basic auth python requests post - bài đăng yêu cầu python auth cơ bản

Nghiêm túc mà nói, chỉ cần sử dụng requests:

import requests
resp = requests.post(url, data={}, auth=('user', 'pass'))

Đó là một thư viện Python thuần túy, cài đặt dễ dàng như ____10 hoặc

urllib.urlopen("https://username:password@hostname/path", data) 
1. Nó có API cực kỳ đơn giản và dễ sử dụng và nó sửa lỗi trong
urllib.urlopen("https://username:password@hostname/path", data) 
2 để bạn không cần phải làm thế. Đừng làm cho cuộc sống của bạn khó khăn hơn vì những yêu cầu tự áp đặt ngớ ngẩn.

Đã trả lời ngày 6 tháng 6 năm 2011 lúc 18:23Jun 6, 2011 at 18:23

Hướng dẫn basic auth python requests post - bài đăng yêu cầu python auth cơ bản

Zeekayzeekayzeekay

51K13 Huy hiệu vàng107 Huy hiệu bạc105 Huy hiệu Đồng13 gold badges107 silver badges105 bronze badges

6

Hackish Workaround Works:

urllib.urlopen("https://username:password@hostname/path", data) 

Rất nhiều người không nhận ra rằng cú pháp cũ để chỉ định tên người dùng và mật khẩu trong URL hoạt động trong

urllib.urlopen("https://username:password@hostname/path", data) 
3. Nó không xuất hiện tên người dùng hoặc mật khẩu yêu cầu bất kỳ mã hóa nào, ngoại trừ nếu mật khẩu bao gồm biểu tượng "@".

Hướng dẫn basic auth python requests post - bài đăng yêu cầu python auth cơ bản

Matt

1.29011 Huy hiệu bạc21 Huy hiệu đồng11 silver badges21 bronze badges

Đã trả lời ngày 7 tháng 8 năm 2015 lúc 14:46Aug 7, 2015 at 14:46

user1740078user1740078user1740078

4765 Huy hiệu bạc3 Huy hiệu Đồng5 silver badges3 bronze badges

Nếu bạn xác định URL, tên người dùng, mật khẩu và một số sau dữ liệu, điều này sẽ hoạt động trong Python2 ...

import urllib2

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
content = urllib2.urlopen(url, post_data)

Ví dụ từ các tài liệu Python chính thức cho thấy Auth cơ bản trong Urllib2: * http://docs.python.org/release/2.6/howto/urllib2.html

Hướng dẫn đầy đủ về xác thực cơ bản bằng Urllib2: * http://www.voidspace.org.uk/python/articles/authentication.shtml

Đã trả lời ngày 6 tháng 6 năm 2011 lúc 18:20Jun 6, 2011 at 18:20

Hướng dẫn basic auth python requests post - bài đăng yêu cầu python auth cơ bản

Corey Goldbergcorey GoldbergCorey Goldberg

57.2K27 Huy hiệu vàng123 Huy hiệu bạc141 Huy hiệu đồng27 gold badges123 silver badges141 bronze badges

1

Basic Auth là một trong nhiều kỹ thuật ủy quyền HTTP được sử dụng để xác nhận quyền truy cập vào điểm cuối HTTP. Hiểu về cơ bản là rất đơn giản, người dùng yêu cầu quyền truy cập vào điểm cuối cũng phải cung cấp,

  • Tên người dùng và mật khẩu dưới dạng thông tin đăng nhập trong cuộc gọi API (hoặc)
  • Mã thông báo ủy quyền cơ bản làm thông tin đăng nhập trong tiêu đề yêu cầu

Chúng ta hãy khám phá cả hai cách trong Python. Với mục đích của bản demo, chúng tôi sẽ sử dụng điểm cuối cơ bản được phơi bày bởi Postman

https://postman-echo.com/basic-auth

Mặc dù đây là một yêu cầu GET, các cuộc gọi Auth Basic cho tất cả các phương thức HTTP khác sẽ vẫn giữ nguyên với một ngoại lệ mà thay vì phương thức Get (), hãy sử dụng phương thức điều trị được hiển thị bởi Thư viện Yêu cầu.

1. Tên người dùng & mật khẩu dưới dạng thông tin đăng nhập:

Chúng tôi có thể trực tiếp nhúng tên người dùng và mật khẩu cơ bản vào yêu cầu bằng cách truyền tên người dùng và mật khẩu dưới dạng phương thức

urllib.urlopen("https://username:password@hostname/path", data) 
4 và phương thức get () trong các yêu cầu sẽ đảm nhận ủy quyền cơ bản cho chúng tôi.

import requests

url = "https://postman-echo.com/basic-auth"
username = "postman"
password = "password"

response = requests.get(url, auth=(username, password))
print(response.status_code)
print(response.json())

2. Mã thông báo cơ bản là thông tin đăng nhập:

Có một cơ hội là đối với API, bạn chỉ nhận được mã thông báo Auth cơ bản thay vì tên người dùng và mật khẩu. Trong kịch bản này, tất cả những gì bạn cần làm là nhúng mã thông báo auth cơ bản làm tiêu đề ủy quyền trong khi thực hiện cuộc gọi API. Một mã thông báo authic cơ bản mẫu sẽ trông như thế này

Basic cG9zdG1hbjpwYXNzd29yZA==
import requests

url = "https://postman-echo.com/basic-auth"
header = {"Authorization" : "Basic cG9zdG1hbjpwYXNzd29yZA=="}

response = requests.get(url, headers=header)
print(response.status_code)
print(response.json())

Đầu ra

Đối với các yêu cầu được thực hiện với thông tin xác thực cơ bản hợp lệ

200
{'authenticated': True}

Đối với các yêu cầu được thực hiện với thông tin xác thực cơ bản không hợp lệ

401
{'authenticated': False}

Làm thế nào để bạn xác thực một yêu cầu bài đăng trong Python?

Sử dụng xác thực cơ bản với các yêu cầu Python ..
Sử dụng mã thông báo ủy quyền cơ bản làm thông tin đăng nhập với các yêu cầu Python ..
Sử dụng xác thực tiêu hóa với các yêu cầu Python ..
Sử dụng xác thực OAuth1 với các yêu cầu Python ..
Sử dụng xác thực OAuth2 và OpenID Connect với các yêu cầu Python ..

Làm cách nào để xác thực các yêu cầu API trong Python?

Có một vài phương thức xác thực phổ biến cho các API REST có thể được xử lý với các yêu cầu Python.Cách đơn giản nhất là chuyển tên người dùng và mật khẩu của bạn đến điểm cuối thích hợp dưới dạng http basic auth;Điều này tương đương với việc gõ tên người dùng và mật khẩu của bạn vào một trang web.

Làm thế nào để bạn vượt qua mã thông báo của người mang ủy quyền trong các yêu cầu của Python?

Để gửi yêu cầu JSON bài đăng với tiêu đề ủy quyền mã thông báo của người mang, bạn cần thực hiện yêu cầu POST HTTP, cung cấp cho mã thông báo của người mang của bạn một ủy quyền: người mang {token} tiêu đề HTTP và cung cấp dữ liệu JSON trong phần thân của thông báo bài đăng.make an HTTP POST request, provide your Bearer Token with an Authorization: Bearer {token} HTTP header and give the JSON data in the body of the POST message.