requests是py用來進行http和https請求的支援庫,在進行http或者https請求時能夠很方便的構造對應請求,下面就以get post方法以及帶請求體 不帶請求體 ,headers session鑑權等使用方法進行說明。
下面示例是以華為雲華北-北京四 vpc為操作物件,分別進行鑑權 查詢vpc 和建立vpc的。具體api格式可以登入華為雲官網檢視
示例中賬號密碼資訊需要根據自己的賬號資訊填寫
#拼接url
return uri_scheme+endpoint+resource_path
defposttoken(resource_path, endpoint, username, password, domainname, projectname):
#請求使用者token
url = jointuri(resource_path, endpoint=endpoint)
headers =json_h
jsonbody =}}
},"scope": }}
}#請求體為json格式時使用json形參進行傳遞
res = requests.post(url=url, headers=headers, json=jsonbody)
token_h[
"x-auth-token
"] = res.headers['
x-subject-token']
return
resdef getvpclist(endpoint, projectid, querystr=none):
#使用headers鑑權獲取使用者vpc列表
resource_path = "
/v1/%s/vpcs
" %projectid
#get方法如果有querystr則進行拼接,一般與url使用?間隔
if querystr is
none:
url = jointuri(resource_path, endpoint=endpoint)
else
: url = jointuri(resource_path, endpoint=endpoint)
url +=querystr
headers ={}
for val in
[json_h, token_h]:
headers.update(val)
#正常http請求有url和headres傳參,headers為字典格式
res = requests.get(url=url, headers=headers)
return
resdef getvpclistfromsession(endpoint, projectid, querystr=none):
#使用session進行鑑權獲取使用者vpc列表
resource_path = "
/v1/%s/vpcs
" %projectid
if querystr is
none:
url = jointuri(resource_path, endpoint=endpoint)
else
: url = jointuri(resource_path, endpoint=endpoint)
url +=querystr
headers ={}
for val in
[json_h, token_h]:
headers.update(val)
#建立session物件,並更新session的headers資訊,將token資訊在session中傳遞
mysession =requests.session()
mysession.headers.update(headers)
#使用session物件進行請求,session已經更新了headers所以請求引數不再需要heasers
res = mysession.get(url=url)
return
resdef getvpclistfromcookies(endpoint, projectid, querystr=none):
#使用cookies鑑權獲取使用者vpc列表
resource_path = "
/v1/%s/vpcs
" %projectid
if querystr is
none:
url = jointuri(resource_path, endpoint=endpoint)
else
: url = jointuri(resource_path, endpoint=endpoint)
url +=querystr
headers ={}
for val in
[json_h, token_h]:
headers.update(val)
#建立session物件,並更新session的cookies資訊,將token在cookies中傳遞
mysession =requests.session()
mysession.cookies.update(headers)
#使用session物件進行請求,session已經更新了headers所以請求引數不再需要heasers。服務方不支援這種鑑權方式,返回401。用法就是這樣
res = mysession.get(url=url)
return
resdef createvpc(endpoint, projectid, name, cidr, description="
default
", enterprise_project_id="0"
):
#帶請求體的請求示例
resource_path = "
/v1/%s/vpcs
" %projectid
url = jointuri(resource_path, endpoint=endpoint)
headers ={}
for val in
[json_h, token_h]:
headers.update(val)
jsonbody =
}#帶url headers requestbody的請求傳參
res = requests.post(url=url, headers=headers, json=jsonbody)
return
resif
__name__ == "
__main__":
#使用header鑑權進行get post請求
posttoken("
/v3/auth/tokens
", "
iam.cn-north-4.myhuaweicloud.com
", "使用者名稱
", "使用者密碼
", "
賬號", "
cn-north-4")
res = getvpclist("
vpc.cn-north-4.myhuaweicloud.com
", "
專案id")
#newvpc = createvpc("vpc.cn-north-4.myhuaweicloud.com", "專案id", "createvpc1", "10.0.0.0/16")
#print(newvpc.json()["vpc"]["id"])
#使用session鑑權進行get post請求
vpclist = getvpclistfromsession("
vpc.cn-north-4.myhuaweicloud.com
", "專案id")
for obj in vpclist.json()['
vpcs']:
print(obj['id'
]) vpclist = getvpclistfromcookies("
vpc.cn-north-4.myhuaweicloud.com
", "專案id")
for obj in vpclist.json()['
vpcs']:
print(obj['
id'])
Python Requests 學習筆記
一直想用 python 做點網路相關的東西,找了下,發現了 requests 庫,現記錄下學習筆記。requests 是什麼 requests 入門 requests 提高 首先,requests 是什麼。requests是乙個封裝了 http 操作和請求的庫,可以很方便的抓取網頁的內容,囧,這個是...
python requests傳送json格式資料
requests是常用的請求庫,不管是寫爬蟲指令碼,還是測試介面返回資料等。都是很簡單常用的工具。但是,我們寫程式的時候,最常用的介面post資料的格式是json格式。當我們需要post json格式資料的時候,怎麼辦呢,只需要新增修改兩處小地方即可。詳見如下 import requests imp...
Python Requests 學習 筆記
在做web題目的時候看到一道這樣的題,要讓我迅速提交,看到別人的writeup 發現要寫python指令碼,於是就來學一下python requests 題目連線 來自網路安全實驗室 該文件的內容來自 pyhon requests 快速入門 r requests.get 網域名稱 其他玩法 r re...