python的接口自动化

1.组建get请求

import requests


# 不带参数的get请求
resp01 = requests.get("https://baidu.com")
print(resp01.status_code)  # 获取响应的http状态码
print(resp01.text)  # 获取响应的文本内容
print(resp01.url)  # 获取完整的url


# 带参数的get请求
login_url = "http://localhost:8080/cms/manage/loginJump.do"
login_data = {
    "userAccount": "admin",
    "loginPwd": "123456"
}
resp02 = requests.get(login_url, login_data)
print(resp02.text)
print(resp02.url)

2.组建post请求

import requests

login_url = "http://localhost:8080/cms/manage/loginJump.do"
login_data = {
    "userAccount": "admin",
    "loginPwd": "123456"
}

### 1.直接调用post方法
resp01 = requests.post(login_url, login_data)
print(resp01.text)
print(resp01.url)

### 2.使用requests方法,参数为post或者get
resp02 = requests.request("post", login_url, data=login_data)
print(resp02.text)
print(resp02.url)

### 3.一般来说,data用在post请求中。params用在get请求中
login_data01 = {
    "userAccount": "admin"
}
login_data02 = {
    "loginPwd": "123456"
}
resp03 = requests.post(login_url, data=login_data01, params=login_data02)
print(resp03.text)
print(resp03.url)

3.接口串联的4种方式

3.1.手动构造请求头

import requests

### 1. cms登录
login_url = "http://localhost:8080/cms/manage/loginJump.do"
login_data = {
    "userAccount": "admin",
    "loginPwd": "123456"
}
login_resp = requests.post(login_url, login_data)
print(login_resp.text)
# 从响应头中拿到session_id
session_id = login_resp.headers["Set-Cookie"].split(";")[0]

### 2. cms查询用户
query_user_url = "http://localhost:8080/cms/manage/queryUserList.do"
query_user_data = {
    "startCreateDate": "",
    "endCreateDate": "",
    "searchValue": "admin",
    "page": "1"
}
# 构建一个请求头并加上前面拿到的session
headers = {
    "Cookie": session_id
}
query_user_resp = requests.post(query_user_url, query_user_data, headers=headers)
print(query_user_resp.text[:100])

3.2.赋值给请求体中的token

import requests
import re
import json

### 1. 登录
login_url = "http://localhost:6666/login"
login_data = {
    "username": "admin",
    "password": "123456"
}
login_resp = requests.post(login_url, login_data)
print(login_resp.text)
# 使用正则提取token
# token = re.findall("\"token\":\"(.+?)\"", login_resp.text)[0]

# 把json响应体转换为python中的字典再提取token
token = json.loads(login_resp.text)['token']

### 2. 查询用户
query_user_url = "http://localhost:6666/queryUser"
query_user_data = {
    "token": token
}
query_user_resp = requests.post(query_user_url, query_user_data)
print(query_user_resp.text)

3.3.post请求中的cookies参数

import requests

### 1. cms登录
login_url = "http://localhost:8080/cms/manage/loginJump.do"
login_data = {
    "userAccount": "admin",
    "loginPwd": "123456"
}
login_resp = requests.post(login_url, login_data)
print(login_resp.text)
# 获取cookies
c = login_resp.cookies

### 2. cms查询用户
query_user_url = "http://localhost:8080/cms/manage/queryUserList.do"
query_user_data = {
    "startCreateDate": "",
    "endCreateDate": "",
    "searchValue": "admin",
    "page": "1"
}
query_user_resp = requests.post(query_user_url, query_user_data, cookies=c)
print(query_user_resp.text[:100])

3.4.session方法

import requests
# 初始化上下文连接
s = requests.session()
s2 = requests.Session()


### 1. cms登录
login_url = "http://localhost:8080/cms/manage/loginJump.do"
login_data = {
    "userAccount": "admin",
    "loginPwd": "123456"
}
login_resp = s.post(login_url, login_data)
print(login_resp.text)


### 2. cms查询用户
query_user_url = "http://localhost:8080/cms/manage/queryUserList.do"
query_user_data = {
    "startCreateDate": "",
    "endCreateDate": "",
    "searchValue": "admin",
    "page": "1"
}
query_user_resp = s.post(query_user_url, query_user_data)
print(query_user_resp.text[:100])

4.组建请求时加上请求头

import requests

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36 Edg/88.0.705.74",
    # "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"
}
resp = requests.get("https://zhuanlan.zhihu.com/p/20410446", headers=headers)
# print(resp.text)
print(resp.url)

5.忽略http验证

import requests

# requests 2.23.0 可用
resp = requests.get("https://www.baidu.com", verify=False)
print(resp.text)

6.响应体编码格式

import requests

resp = requests.get("https://www.baidu.com")
# 手动设置编码格式
resp.encoding = "utf-8"

# 自动设置编码格式
resp.encoding = resp.apparent_encoding

print(resp.text)

7.处理json格式入参

import requests
import json

### 1. 把字典转换为json格式,手动拼接请求头,加上application/json
login_url = "http://localhost:5000/auth/login"
login_data = {
    "username": "admin",
    "password": "123456"
}
headers = {
    "Content-Type": "application/json"
}
resp = requests.post(login_url, json.dumps(login_data), headers=headers)
print(resp.text)

### 2. 将参数传给json关键字,自动转换格式以及加上请求头
resp1 = requests.post(login_url, json=login_data)
print(resp1.text)

8.处理json格式出参

import requests
import json

login_url = "http://localhost:8080/cms/manage/loginJump.do"
login_data = {
    "userAccount": "admin",
    "loginPwd": "123456"
}
login_resp = requests.post(login_url, login_data)
print(login_resp.text)  # json(字符串)

### 1.使用json模块中的.loads()方法
print(json.loads(login_resp.text)["msg"])

### 2.使用返回参数的.json()方法
print(login_resp.json()['msg'])

9.处理字节格式的响应

import requests

resp = requests.get("https://img-baofun.zhhainiao.com/market/b99b51e6c7945c9d5565861d397451cb_preview.mp4", verify=False)

# 获取字节格式响应体
mp4_bytes = resp.content
with open("test.mp4", "wb") as fwb:
    fwb.write(mp4_bytes)

10.设置代理和超时时间

import requests

proxy= {
    "http": "http://localhost:8888",
    "https": "https://localhost:8888"
}
resp = requests.get("http://localhost/bbs", proxies=proxy, timeout=10)

11.禁止自动重定向

import requests

resp = requests.get("http://localhost:8080/cms", allow_redirects=False)
print(resp.headers)

resp1 = requests.get("http://localhost:8080" + resp.headers["Location"], allow_redirects=False)
print(resp1.headers)

resp2 = requests.get("http://localhost:8080" + resp1.headers["Location"], allow_redirects=False)
print(resp2.headers)
print(resp2.text)

12.使用超级鹰第三方获取验证码

from selenium import webdriver
from time import sleep
from library.chaojiying import Chaojiying_Client
    # chaojiying import Chaojiying_Client

driver = webdriver.Chrome()
driver.get("http://www.chaojiying.com/user/login/")
driver.maximize_window()
sleep(1)

driver.find_element_by_name("user").send_keys("sss123")
driver.find_element_by_name("pass").send_keys("123123")
sleep(1)
pic_bytes = driver.find_element_by_css_selector(".login_form>form>div>img").screenshot_as_png

cjy = Chaojiying_Client("sss123", "123123", "909851")
resp = cjy.PostPic(pic_bytes, 1902)
print(resp)

driver.find_element_by_name("imgtxt").send_keys(resp["pic_str"])
sleep(1)

driver.find_element_by_class_name("login_form_input_submit").click()

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值