requests使用小结(不定期更新)

request是python的第三方库,使用上比urllib和urllib2要更方便。

0x01 

使用session发送:能保存一条流中获取的cookie,并自动添加到http头中

s = requests.Session()

resp=s.get(url,headers=header,verify=False,timeout=10)

0x02

post请求中payload的赋值

payload={

    'param1':'value1',

    'param2':'value2',

   'param3':'value3'

}

 resp=s.post(url,headers=header,data=payload,verify=False,timeout=10)

抓包可以看到发送的data部分为:

param1=value1&param2=value2&param3=value3

如果需要对值中的数据进行url编码:

import urllib

payload="captchaChannel=211&params=\"123455\""

urllib.quote(payload,''=&")

第二个参数表示不需要编码的字符,上例中只对引号“进行url编码,载荷为:

captchaChannel=211&params=%22123455%22

 

0x03

post请求中既有payload,又要发送文件:

假设文件是png格式图片,使用如下方式发送:

image_file=open('img.png', 'rb').read()

files = {'image': ('img.png', image_file)}

params = {

'username': self.username,

'password': self.password,

'softid': self.soft_id,

'softkey': self.soft_key

}

resp= s.post(url, data=params, files=files, headers=self.headers)

可以看到发送的内容是这样的,boundary应该是时间进行md5运算得到的值。这个后面跟的内容就是image文件。

 

0x04 headers的赋值

对于post请求可以不用手动填写Content-length,requests会自动帮我们计算并填写。

headers使用字典格式赋值:

header={
'Host': 'www.******.com',\
'Connection': 'keep-alive', \
'Accept': '*/*', \
'Origin': 'https://www.*****.com', \
'X-Requested-With': 'XMLHttpRequest', \
'User-Agent': 'Mozilla/4.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.116 Safari/537.36',\
'Referer': 'https://www.*******************', \
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', \
'Accept-Encoding': 'gzip, deflate, br',\
'Accept-Language':'zh-CN,zh;q=0.8', \
}

add_header={
'add1':'11111',
'add2':'22222'
}

如果后续请求中需要添加字段,可以使用:

header.update(add_header)

 

0x05 使用requests访问https

访问https的时候可以使用verify=False关掉验证

r = resuqests.get("https://www.baidu.com",verify=False)

print r.text

但是在一台新装centos系统上如上运行,出现了报错,经过分析,发现是新系统没有装ssl证书。

安装参考:http://blog.csdn.net/zuoyigexingfude/article/details/51035613

 

posted @ 2017-08-24 19:12  桃乐丝  阅读(516)  评论(0编辑  收藏  举报