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

前言

發送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.以禪道登錄為例,模擬登陸,這里需添加請求頭headers,可以用fiddler抓包

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

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"
??????????? }

?

五、禪道登錄參考代碼

# coding:utf-8
# coding:utf-8
import requests
# 禪道host地址
host = "http://127.0.0.1"

def login(s,username,psw):
??? url = host+"/zentao/user-login.html"

??? h = {
??????? "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
??????? "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
??????? "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
??????? "Accept-Encoding": "gzip, deflate",
??????? "Referer": host+"/zentao/user-login.html",
??????? # "Cookie":? # 頭部沒登錄前不用傳cookie,因為這里cookie就是保持登錄的
??????? "Connection": "keep-alive",
??????? "Content-Type": "application/x-www-form-urlencoded",
??????? }

??? body1 = {"account": username,
???????????? "password": psw,
???????????? "keepLogin[]": "on",
???????????? "referer":? host+"/zentao/my/"
??????????? }

??? # s = requests.session()?? 不要寫死session

??? r1 = s.post(url, data=body1, headers=h)
??? # return r1.content? # python2的return這個
??? return r1.content.decode("utf-8")? # python3

def is_login_sucess(res):
??????? if "登錄失敗,請檢查您的用戶名或密碼是否填寫正確。" in res:
??????????????? return False
??????? elif "parent.location=" in res:
??????????????? return True
??????? else:
??????????????? return False

if __name__ == "__main__":
??? s = requests.session()
??? a = login(s, "admin", "e10adc3949ba59abbe56e057f20f883e")
??? result = is_login_sucess(a)
??? print("測試結果:%s"%result)

?

轉載于:https://www.cnblogs.com/liunaixu/p/11077422.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393072.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393072.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393072.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

簡介瀏覽器內核與JavaScript引擎

本文介紹了常用瀏覽器內核與JavaScript引擎 一、瀏覽器內核 Rending Engine, 顧名思義,稱之為渲染網頁內容的,將網頁的代碼轉換為你看得見的頁面,因為是排版,所以排版,所以肯定會有排版錯誤等問題。為什么會有排版錯誤…

Linux查看tar實用程序,linux tar指令常用選項

linux的tar指令經常被用到,因為壓縮文件的時候通常需要打包文檔,而tar指令就是打包指令,同時gzip壓縮程序和bzip2壓縮程序都是支持tar指令的,所以tar指令在打包的同時還可以用gzip和bzip進行壓縮,這樣多文件可以打包的…

代碼字體mono_如何構建代碼存儲庫:Multi,Mono或Organic?

代碼字體monoby Chetan Sharma由Chetan Sharma 如何構建代碼存儲庫:Multi,Mono或Organic? (How to Structure Code Repositories: Multi, Mono, or Organic?) The newest debate in town is whether you should keep your services in a si…

leetcode1424. 對角線遍歷 II(排序)

給你一個列表 nums ,里面每一個元素都是一個整數列表。請你依照下面各圖的規則,按順序返回 nums 中對角線上的整數。 示例 1: 輸入:nums [[1,2,3],[4,5,6],[7,8,9]] 輸出:[1,4,2,7,5,3,8,6,9] 代碼 class Solution …

DaVinci各版本安裝指南

鏈接: https://pan.baidu.com/s/1g1kaXZxcw-etsJENiW2IUQ?pwd0531 ? #2024版 1.鼠標右擊【DaVinci_Resolve_Studio_18.5(64bit)】壓縮包(win11及以上系統需先點擊“顯示更多選項”)【解壓到 DaVinci_Resolve_Studio_18.5(64bit)】。 2.打開解壓后的文…

使用 Servlet 讀取表單數據

Technorati 標簽: servlet;java 一、概述 Servlet 有一個比較好的功能就是可以自動處理表單提交的數據。我們只需要調用HttpServletRequest#getParameter(String name),就可以獲得指定參數的值(String),注意此方法是大小寫敏感的。…

linux文檔權限

1、登錄 root 用戶:su - mac一開始進入創建的用戶是具有管理員權限的用戶,但是密碼卻不是進入 root 用戶的密碼,可以使用 sudo su - 免密進入 root 用戶。 2、退出 root 用戶:exit 3、列出檔案(包括隱藏的檔案&#xf…

小程序 仿麥當勞_手機上的麥當勞和星巴克:為什么現在首先使用移動應用程序...

小程序 仿麥當勞by James Hsu由徐H 手機上的麥當勞和星巴克:為什么現在首先使用移動應用程序 (McDonald’s and Starbucks on Your Phone: Why Mobile Apps Are Now First on the Menu) One Friday this July, I got excited about McDonalds. So excited that I s…

MyLinkedList

/*** 節點類* author JP* */ class Node {Object value;//節點元素值Node pre;//上一個節點Node next;//下一個節點public Node(Object value) {this.value value;} }/*** 鏈表類* author JP**/ public class MyLinkedList {Node cur;//目前指向的節點Node head;//頭結點Node …

linux開啟ping服務,Linux 云服務器禁止和開啟Ping

原標題:Linux 云服務器禁止和開啟Ping在使用Linux服務器的時候,一般系統默認是開啟ping的,比如我們可以ping測試網絡的延遲質量。當然也有部分服務商是可以通過安全組設置禁止ping的,我們可以設置安全組對應項目開啟或禁止ping&am…

leetcode1432. 改變一個整數能得到的最大差值(貪心)

給你一個整數 num 。你可以對它進行如下步驟恰好 兩次 &#xff1a; 選擇一個數字 x (0 < x < 9). 選擇另一個數字 y (0 < y < 9) 。數字 y 可以等于 x 。 將 num 中所有出現 x 的數位都用 y 替換。 得到的新的整數 不能 有前導 0 &#xff0c;得到的新整數也 不能…

oracle之 Oracle歸檔日志管理

在Oracle中&#xff0c;數據一般是存放在數據文件中&#xff0c;不過數據庫與Oracle最大的區別之一就是數據庫可以在數據出錯的時候進行恢復。這個也就是我們常見的Oracle中的重做日志(REDO FILE)的功能了。在重做日志分成2部分&#xff0c;一個是在線重做日志文件&#xff0c;…

linux 安裝rmp服務,Linux LAMP服務的rpm包安裝與配置

1.apache(httpd) 所在光盤裝包apr-xxx.rpm (二)postgresql-libs-xxx.rpm (二)apr-util-xxx.rpm (二)http-xxx.rpm (二)2.mysql (二)裝包perl-DBI-xxx.rpm (二)mysql-xxx.rpm (二)3.mysqlserver裝包perl-DBD-mysql-xxx.rpm (二)mysql-server-xxx.rpm (二)4.PHP裝包gmp-xxx.rpm (…

紅外感應模塊+蜂鳴器實現簡易報警(轉)

拿到了一個紅外感應模塊HC-SR501&#xff0c;于是就用它和蜂鳴器簡單試驗了下。主要是試驗一下這個紅外感應模塊的功能&#xff0c;所以代碼也寫的很隨便啦&#xff0c;邏輯上也欠考慮。實現基本功能&#xff1a;運行腳本后&#xff0c;感應模塊每隔一定時間檢測&#xff0c;如…

leetcode51. N 皇后(回溯算法)

n 皇后問題研究的是如何將 n 個皇后放置在 nn 的棋盤上&#xff0c;并且使皇后彼此之間不能相互攻擊。 上圖為 8 皇后問題的一種解法。 給定一個整數 n&#xff0c;返回所有不同的 n 皇后問題的解決方案。 每一種解法包含一個明確的 n 皇后問題的棋子放置方案&#xff0c;該方案…

ubuntu下python的錯誤

ubuntu python 2.7 python test.py *.py permission denied chmod x *.py 轉載于:https://www.cnblogs.com/gisalameda/p/11086624.html

kotlin半生對象_如何在Kotlin中使用Actor實現對象池

kotlin半生對象by osha1由osha1 如何在Kotlin中使用Actor實現對象池 (How to implement an Object-Pool with an Actor in Kotlin) We use object pool in jasync-sql to manage connections to the database. In this post, I will share how it is done in a performant, lo…

linux運行apktool簽名,解決Linux中使用ApkTool遇到問題

8種機械鍵盤軸體對比本人程序員&#xff0c;要買一個寫代碼的鍵盤&#xff0c;請問紅軸和茶軸怎么選&#xff1f;遇到問題在Linux中使用IntelliDroid工具時&#xff0c;按要求配置好環境之后&#xff0c;始終無法成功運行該工具內部的ApkTool&#xff0c;導致后續的安卓靜態分析…

python 腳本學習(二)

task1&#xff1a; 在一個文件中&#xff0c;單詞之間使用空格、分號、逗號或者句號分隔&#xff0c;請提取全部單詞。 代碼實例&#xff1a; 1234567891011#!/usr/local/python27/bin/python2.7import sys import re words [] with open(sys.argv[1]) as f: for line in f: #…

2.2 Consumer API官網剖析(博主推薦)

不多說&#xff0c;直接上干貨&#xff01; 一切來源于官網 http://kafka.apache.org/documentation/ 2.2 Consumer API 2.2、消費者API 隨著0.9.0版本&#xff0c;我們已經增加了一個新的Java消費者替換我們現有的基于zookeeper的高級和低級消費者。這個客戶端還是測試版的質量…