用curl实现python的请求续篇

434 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情

续上一篇,这里通过对比的方式,向大家分享curl语句的用法,其中python选用requests库来发送请求,请求的内容是上篇说到的httpbin.org网站。适用于会Python但不太会用shell的学习者,学会这些基础操作,你就能很流畅的在其中转换。

获取响应头

 

python的requests库通过headers和status_code表示响应的头信息和状态码,在curl中,只需要使用-i参数来随响应内容一起显示

也可以用大写的-I参数只显示头信息。  

-i的结果:

image.png

 

下载文件

在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请求方式进行转换了。