博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
requests使用小结(不定期更新)
阅读量:5239 次
发布时间:2019-06-14

本文共 1959 字,大约阅读时间需要 6 分钟。

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

 

转载于:https://www.cnblogs.com/taurusfy/p/7424841.html

你可能感兴趣的文章
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>
.net 文本框只允许输入XX,(正则表达式)
查看>>
实验2-2
查看>>
MongoDB遇到的疑似数据丢失的问题。不要用InsertMany!
查看>>
android smack MultiUserChat.getHostedRooms( NullPointerException)
查看>>
IOS Google语音识别更新啦!!!
查看>>
[置顶] Linux终端中使用上一命令减少键盘输入
查看>>
BootScrap
查看>>
【Python学习笔记】1.基础知识
查看>>
梦断代码阅读笔记02
查看>>
selenium学习中遇到的问题
查看>>
[Linux]PHP-FPM与NGINX的两种通讯方式
查看>>
Java实现二分查找
查看>>
架构图-模型
查看>>
黑马程序员_Java基础枚举类型
查看>>
UIImage 和 iOS 图片压缩UIImage / UIImageVIew
查看>>
django ORM创建数据库方法
查看>>
php7 新特性整理
查看>>