请求模板

其中的d是一个字典类型,其中的键key1、key2…就是HTML前端代码form表单中的name属性值

value1、value2…就是用户提交的内容

requests.post用来提交post类型请求,requests.get用来提交get类型请求

r是一个requests.models.Response类型的对象,可以调用对象的text方法来获取返回包的文本内容

之后需要获取上传文件的链接时,就可以通过text方法先获取返回内容,再使用re正则表达式对链接进行匹配

1
2
3
4
5
6
7
import requests
url = 'http://IP:端口/路径'
d = {'key1': 'value1', 'key2': 'value2'}
h = {'Content-Type': 'application/x-www-form-urlencoded'}
c = "cookie"
r = requests.post(url, data=d,headers=h,cookies=c)
print(r.text)

后端代码

假设存在一个登录验证的后端接口,form表单提交的方式为post

需要传入name和password,正确后才能继续下一步操作(为了方便演示,不使用数据库)

1
2
3
4
5
6
7
8
<?php
$name = $_POST["name"];
$pass = $_POST["pass"];
if(strcmp($name,"fox")==0 and strcmp($pass,"fox")==0){ //账户密码正确时
echo "登录成功";
}else{
echo "登录失败";
}

后端代码放在了WEB根目录下,所以访问的时候就是http://IP:端口/test1.php

先访问一下URL再抓包获取请求,将请求发送到重放模块,修改请求类型为POST

如果账户密码都为fox时返回登录成功,否则返回登录失败

模拟请求

先设置一个登录错误的值

1
2
3
4
5
6
import requests
url = 'http://192.168.121.1/test1.php'
d = {'name': 'test', 'pass': 'testpass'}
h = {'Content-Type': 'application/x-www-form-urlencoded'}
r = requests.post(url, data=d,headers=h)
print(r.text)

1

登录成功的情况

1
2
3
4
5
import requests
url = 'http://192.168.121.1/test1.php'
d = {'name': 'fox', 'pass': 'fox'}
r = requests.post(url, data=d)
print(r.text)