某团—请求403 Forbidden、openresty

发布于:2022-10-17 ⋅ 阅读:(1808) ⋅ 点赞:(0)

某团—请求403 Forbidden、openresty

前言

今天在看某团h5页面时,听朋友说有个mtgsig加密参数,于是先来抓包看下
网站地址:aHR0cHM6Ly9tZWlzaGkubWVpdHVhbi5jb20vaS8=

遇到问题

加密参数位置:
在这里插入图片描述
但是今天不分析加密参数(我还没看),先分析下这个请求,从中再看requests方法中的(json参数和data参数的区别)

post请求一般会有from-data、payload两种参数类型,按照如下网站(https://developer.aliyun.com/article/1006527以及https://www.jb51.net/article/237344.htm)的说法:

(1)在Python中发送Form Data表单请求

headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
requests.post(url, data=data, headers=headers)

(2)在Python中发送Request Payload表单请求


传递json数据
headers = {
    "Content-Type": "application/json"
}
requests.post(url, data=json.dumps(data), headers=headers)
#或者
requests.post(url, json = data, headers=headers)

在实际中我也是看到from-data数据使用data=dic的形式,看到payload数据使用json=dic的形式.

但是这次当我把代码写好后,发送请求,显示下面的错误:
在这里插入图片描述
然后我又使用fiddler抓包,重放请求,结果又是可以的??

上次遇到这个题目还是猿人学第3题:请求头参数顺序反爬

于是我按照这个题目的解题思路:采用session.headers=headers的方式保留请求头顺序

结果还是一样的错误,后续分析fiddler中成功与失败请求的区别:发现是使用json=data发送请求后,会将字典dic转换为的json字符串加一些不必要的空格,如果服务器校验严格,就会失败

一般遇到这个问题的都是这样写的,正式因为json传参默认进行格式化造成的问题。

data= {"a":111,"b":222}
request.post(url,json=data)

发送请求时,会转换为

{"a": 111, "b": 222}

解决方案

解决方案就是使用json.dumps手动转换

data_= {"a":111,"b":222}
request.post(url,data=json.dumps(data_,separators=(',', ':')))
本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到