POST 请求与GET请求的区别
1、 请求更安全
post不会作为url的⼀部分,不会被缓存、保存⽇志、以及记录在浏览器中。
get请求的是静态资源,则会缓存,如果是数据,则不会缓存。
2、请求发送的数据更⼤
get请求有url⻓度限制;post请求⻓度不限。
3、请求能发送更多的数据类型
get请求只能发送⼆进制数据;post能发送json,表单,⽂件参数等。
4、传参⽅式不同
get请求参数通过url传递;post请求放在request body中传递。
5、get请求产⽣⼀个数据包;post请求产⽣两个数据包
get请求,浏览器会把header和data⼀并发送出去,服务器响应200返回数据。
post请求,浏览器先发送header,服务器响应100,浏览器再发送data,服务器响应200 再返回数据。
百度翻译实例
1、在浏览器中拿到url等信息
发现banana并不在网页源代码中,切换到XHR,搜索banana
找到了数据存储的文件,从中获取url,请求方式,发送的data等。也能得知返回的是json文件。
import requests
def get_en(var):
# 在浏览器中找网址,请求方式为POST
url = r"https://fanyi.baidu.com/v2transapi"
headers = {
'User-Agent': User-Agent,
'Cookie': Cookie
}
data = {
'from': 'zh',
'to': 'en',
'query': var,
'simple_means_flag': '3',
'sign': '816986.562283', # 这个参数只适用与香蕉
'token': '99a919c2ec55b5d94460a2d84fa80271',
'domain': 'common',
'ts': '1701755450221', # 这个参数只适用与香蕉
}
response = requests.post(url, headers=headers, data=data)
print(response.json())
def main():
zh = '香蕉'
print(get_en(zh))
if __name__ == '__main__':
main()