携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
续上一篇,这里通过对比的方式,向大家分享curl语句的用法,其中python选用requests库来发送请求,请求的内容是上篇说到的httpbin.org网站。适用于会Python但不太会用shell的学习者,学会这些基础操作,你就能很流畅的在其中转换。
获取响应头
python的requests库通过headers和status_code表示响应的头信息和状态码,在curl中,只需要使用-i参数来随响应内容一起显示
也可以用大写的-I参数只显示头信息。
-i的结果:
下载文件
在requests库里,一般通过取得响应的content,再写入文件的方式来下载文件,而curl中通过-o或-O来下载
url = "http://httpbin.org/image/jpeg"
response = requests.request("GET", url, headers=headers, data=payload)
with open('xx.jpg','wb') as f:
f.write(response.content)
在curl中,大写O参数直接以url尾部作为文件名进行下载,如刚才的地址,本地会生成一个文件jpeg,用小写o作为参数可以指定文件名。
curl -o xx.jpg httpbin.org/image/jpeg
请求附带cookie
cookie在网络请求中是很重要的数据,他可以完成模拟登录信息,记录登录状态等操作,在requests库中,我们在headers字典中写Cookie键即可实现,也可以在request的参数中加上cookies参数,参数类型为字典,这里两个不能同时使用,同时使用只生效headers中设置的Cookie。
示例代码如下:
url = "http://httpbin.org/get"
headers = {
'Date': '20220822',
'Content-Type': 'application/x-www-form-urlencoded',
'Cookie':'name=abc'
}
response = requests.request("GET", url, headers=headers, data=payload,cookies={
't':'12'
})
在curl中,使用-b参数来进行cookie添加
curl -b 'name=abc;time=0102' httpbin.org/get
而且这里的cookie以分号分隔,不能像前一篇一样添加多个-b参数。
取得响应的cookies
上一节在请求附带cookies,这一节取得响应里的cookies
requests库中使用response.cookies查看响应的cookies,curl中使用-c参数将cookies写入到文件,我们可通过-b 文件名的方式复用这个文件,来达到传递cookies的目的。
curl -c cookies.txt httpbin.org/cookies
忽略https
requests库中请求函数增加verify=False参数来实现避开https的证书验证,curl使用-k参数来实现。
至此,我们就能对基本的python请求方式进行转换了。