[英]HTTP basic authentication using sockets in python
如何使用python中的基本http auth thru套接字連接到服務器。我不想使用urllib / urllib2等,因為我的程序執行一些低級套接字I / O操作
可能最容易開始的地方是使用makefile()
來獲得一個更簡單的類似文件的套接字接口。
import socket, base64
host= 'www.example.com'
path= '/'
username= 'fred'
password= 'bloggs'
token= base64.encodestring('%s:%s' % (username, password)).strip()
lines= [
'GET %s HTTP/1.1' % path,
'Host: %s' % host,
'Authorization: Basic %s' % token,
'Connection: close',
]
s= socket.socket()
s.connect((host, 80))
f= s.makefile('rwb', bufsize=0)
f.write('\r\n'.join(lines)+'\r\n\r\n')
response= f.read()
f.close()
s.close()
如果您需要解釋返回的響應以選擇HTML或auth-required標頭,並處理重定向,錯誤,傳輸編碼等,那么您將不得不做更多的工作。 HTTP可能很復雜! 您確定需要使用低級插槽嗎?
查看urllib的源代碼 ,特別是http_error_401
函數(當然還有調度):發出HTTP請求,查看401響應,提取其領域,檢查其方案是否為basic
,再次嘗試用戶和密碼那個領域(同一個源文件中的cfr函數retry_http_basic_auth
)。 當然有很多工作,但這就是你需要的編程“直到裸機”的代價。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.