1. 程式人生 > >python接口自動化2-發送post請求

python接口自動化2-發送post請求

ref ati pos 返回結果 requested har 情況 -1 spa

前言

發送post的請求參考例子很簡單,實際遇到的情況卻是很復雜的,首先第一個post請求肯定是登錄了,但登錄是最難處理的。登錄問題解決了,後面都簡單了。

一、查看官方文檔

1.學習一個新的模塊,其實不用去百度什麽的,直接用help函數就能查看相關註釋和案例內容。

>>import requests

>>help(requests)

技術分享

2.查看python發送get和post請求的案例

>>> import requests
>>> r = requests.get(‘https://www.python.org‘)

>>> r.status_code
200
>>> ‘Python is a programming language‘ in r.content
True

... or POST:

>>> payload = dict(key1=‘value1‘, key2=‘value2‘)
>>> r = requests.post(‘http://httpbin.org/post‘, data=payload)
>>> print(r.text)
{
...
"form": {
"key2": "value2",
"key1": "value1"
},
...
}

二、發送post請求

1.用上面給的案例,做個簡單修改,發個post請求

2.payload參數是字典類型,傳到如下圖的form裏

技術分享

三、json

1.post的body是json類型,也可以用json參數傳入。

2.先導入json模塊,用dumps方法轉化成json格式。

3.返回結果,傳到data裏

技術分享

四、headers

1.以博客園為例,模擬登陸,實際的情況要比上面講的幾個基本內容要復雜很多,一般登陸涉及安全性方面,登陸會比較復雜

2.這裏需添加請求頭headers,可以用fiddler抓包

技術分享

3.講請求頭寫成字典格式

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding": "gzip, deflate, br",
"Content-Type": "application/json; charset=utf-8",
"X-Requested-With": "XMLHttpRequest",
"Cookie": "xxx.............", # 此處cookie省略了
"Connection": "keep-alive"
}

五、登陸博客園

1.由於這裏是https請求,直接發送請求會報錯誤:SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)

2.可以加個參數:verify=False,表示忽略對 SSL 證書的驗證

3.這裏請求參數payload是json格式的,用json參數傳

4.紅色註釋那兩行可以不用寫

5.最後結果是json格式,可以直接用r.json返回json數據:{u‘success‘: True}

技術分享

六、參考代碼

# coding:utf-8
import requests
url = "https://passport.cnblogs.com/user/signin"

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
"Accept": "application/json, text/javascript, */*; q=0.01",
"Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
"Accept-Encoding": "gzip, deflate, br",
"Content-Type": "application/json; charset=utf-8",
# "VerificationToken": "",
"X-Requested-With": "XMLHttpRequest",
# "Referer": "",
"Content-Length": "385",
"Cookie": "xxx...", # 此處省略
"Connection": "keep-alive"
}


payload = {"input1":"xxx",
"input2":"xxx",
"remember":True}


r = requests.post(url, json=payload, headers=headers,verify=False)
print r.json()

對python接口自動化有興趣的,可以加python接口自動化QQ群:226296743

也可以關註下我的個人公眾號:

技術分享

python接口自動化2-發送post請求