python的request请求401_Python requests HTTP验证登录(解决401错误)
1、場景
1)用戶輸入完網址后,瀏覽器直接彈出需要輸入用戶名/密碼
PS:此時輸入用戶名密碼即可登錄,或者直接帶著用戶名密碼訪問網站。
假設url為http://xxx.yyy.zzz
用戶名為admin
密碼為123456
則訪問的網址應該為http://admin:123456@xxx.yyy.zzz【http://username:password@url】
直接訪問改網址即可
2)利用requests.get(url)返回狀態碼為401
#-*- encoding=utf-8 -*-
importrequestsif __name__ == '__main__':
url= 'http://xxxxx.yyyyyy'response= requests.get(url=url)
status_code=response.status_codeprintstatus_code
text=response.textprint text
運行
401
401 - Unauthorized: Access is denied due to invalid credentials.Server Error
401 - Unauthorized: Access is denied due to invalid credentials.
You do not have permission to view this directory or page using the credentials that you supplied.
2、HTTP基礎驗證
這是一種簡單的身份認證,它是通過http的authorization請求頭中,攜帶經過base64加密的用戶名和密碼而實現的一種認證
#-*- encoding=utf-8 -*-
importrequestsfrom requests.auth importHTTPBasicAuthif __name__ == '__main__':
url= 'http://xxx.yyy.zzz'user= 'admin'password= '123456'response= requests.get(url=url, auth=HTTPBasicAuth(user, password))#或者
#response = requests.get(url=url, auth=(user, password))
print response.status_code
3、摘要式身份認證
#-*- encoding=utf-8 -*-
importrequestsfrom requests.auth importHTTPDigestAuthif __name__ == '__main__':
url= 'http://xxx.yyy.zzz'user= 'admin'password= '123456'response= requests.get(url, auth=HTTPDigestAuth(user, password))print response.status_code
如果2和3都不行,還是返回401,此時可以試試第4種
使用2和3依舊返回401,此時可以print出response.headers看一下
#-*- encoding=utf-8 -*-
importrequestsfrom requests.auth importHTTPDigestAuthif __name__ == '__main__':
url= 'http://xxx.yyy.zzz'user= 'admin'password= '123456'response= requests.get(url, auth=HTTPDigestAuth(user, password))printresponse.status_codeprint response.headers
運行
401{'Content-Length': '', 'X-Powered-By': 'ASP.NET', 'Server': 'Microsoft-IIS/7.5', 'Date': 'Fri, 05 Jun 2020 05:36:23 GMT', 'Content-Type': 'text/html', 'WWW-Authenticate': 'Negotiate, NTLM'}
打印后可看到headers中帶有字樣'WWW-Authenticate': 'Negotiate, NTLM',表示需要ntlm驗證,此時嘗試使用第4種
4、ntlm驗證
#-*- encoding=utf-8 -*-
importrequestsfrom requests_ntlm importHttpNtlmAuthif __name__ == '__main__':
url= 'http://xxx.yyy.zzz'user= 'admin'password= '123456'response= requests.get(url, auth=HttpNtlmAuth(user, password))printresponse.status_codeprint response.headers
總結
以上是生活随笔為你收集整理的python的request请求401_Python requests HTTP验证登录(解决401错误)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 生产者和消费者模式_Pyt
- 下一篇: python字符串操作符结果没显示_Py