반응형
Python Requests 라이브러리에서 기본 HTTP 인증을 사용하려면 어떻게 해야 합니까?
파이썬에서 기본적인 HTTP 인증을 사용하려고 합니다.Requests 라이브러리를 사용하고 있습니다.
auth = requests.post('http://' + hostname, auth=HTTPBasicAuth(user, password))
request = requests.get('http://' + hostname + '/rest/applications')
응답양식auth
변수:
<<class 'requests.cookies.RequestsCookieJar'>[<Cookie JSESSIONID=cb10906c6219c07f887dff5312fb for appdynamics/controller>]>
200
CaseInsensitiveDict({'content-encoding': 'gzip', 'x-powered-by': 'JSP/2.2', 'transfer-encoding': 'chunked', 'set-cookie': 'JSESSIONID=cb10906c6219c07f887dff5312fb; Path=/controller; HttpOnly', 'expires': 'Wed, 05 Nov 2014 19:03:37 GMT', 'server': 'nginx/1.1.19', 'connection': 'keep-alive', 'pragma': 'no-cache', 'cache-control': 'max-age=78000', 'date': 'Tue, 04 Nov 2014 21:23:37 GMT', 'content-type': 'text/html;charset=ISO-8859-1'})
그러나 다른 위치에서 데이터를 가져오려고 하면 HTTP Status 401 오류가 발생합니다.
<<class 'requests.cookies.RequestsCookieJar'>[]>
401
CaseInsensitiveDict({'content-length': '1073', 'x-powered-by': 'Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Oracle Corporation/1.7)', 'expires': 'Thu, 01 Jan 1970 00:00:00 UTC', 'server': 'nginx/1.1.19', 'connection': 'keep-alive', 'pragma': 'No-cache', 'cache-control': 'no-cache', 'date': 'Tue, 04 Nov 2014 21:23:37 GMT', 'content-type': 'text/html', 'www-authenticate': 'Basic realm="controller_realm"'})
제가 알기로는 두 번째 요청 세션에서 매개 변수는 대체되지 않습니다.
세션 개체를 사용하고 요청할 때마다 인증을 전송해야 합니다.이 세션에서는 쿠키도 추적합니다.
session = requests.Session()
session.auth = (user, password)
auth = session.post('http://' + hostname)
response = session.get('http://' + hostname + '/rest/applications')
import requests
from requests.auth import HTTPBasicAuth
res = requests.post('https://api.github.com/user', auth=HTTPBasicAuth('user', 'password'))
print(res)
Python3에서는 다음과 같이 쉬워집니다.
import requests
response = requests.get(uri, auth=(user, password))
밑에 있는 것이 나를 위해 일했습니다.
#!/usr/bin/python3
import xml.etree.ElementTree as ET
import requests
from requests.auth import HTTPBasicAuth
url = 'http://172.25.38.135:600/service/xx/users' # my URL
response = requests.get(url, auth=HTTPBasicAuth('admin', 'adminpass!'))
string_xml = response.content
tree = ET.fromstring(string_xml)
ET.dump(tree)
python 2의 경우:
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request = urllib2.Request(url)
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib2.urlopen(request)
data = result.read()
다음이 저에게 효과가 있었습니다.
from requests.auth import HTTPDigestAuth
url = 'https://someserver.com'
requests.get(url, auth=HTTPDigestAuth('user', 'pass'))
언급URL : https://stackoverflow.com/questions/26745462/how-do-i-use-basic-http-authentication-with-the-python-requests-library
반응형
'code' 카테고리의 다른 글
레코드에서 HTML 태그 제거 (0) | 2023.11.04 |
---|---|
ASP.NET MVC5 - Oracle Database에 사용자 유지 (0) | 2023.11.04 |
angular2에서 타이머를 만드는 방법 (0) | 2023.10.30 |
코드 점화기에서 mysql AND OR 쿼리 결합 (0) | 2023.10.30 |
jQuery 체크 ifjQuery 체크 if존재하며 값을 갖습니다.존재하며 값을 갖습니다. (0) | 2023.10.30 |