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

requests使用小结(不定期更新)的更多相关文章

  1. 基于C/S架构的3D对战网络游戏C++框架 _【不定期更新通知】

    由于笔者最近有比赛项目要赶,这个基于C/S架构的3D对战网络游戏C++框架也遇到了一点瓶颈需要点时间沉淀,所以近一段时间不能保证每天更新了,会保持不定期更新.同时近期笔者也会多分享一些已经做过学过的C ...

  2. 从壹开始前后端分离 [.netCore 不定期更新 ] 三十五║ 完美实现全局异常日志记录

    缘起 哈喽我是不定期更新的日常,昨天群里小伙伴问到了记录日志,当然,以前我也挖过这个坑,后来一直没有来得及填上,也想着 swagger 一直又有错误信息展示的功能,就迟迟没有添加这个功能,不过昨天夜里 ...

  3. net core 小坑杂记之配置文件读取(不定期更新)

    其实很早就想写了,原想等积累差不多了再写的,但是发现遇到一个当时记下效果会比较好,所以就不定期更新这个系列了,后面获取会整个整理一下. 此篇记载net core入门时踩的一些坑,网上教程太少了,也不规 ...

  4. React性能优化记录(不定期更新)

    React性能优化记录(不定期更新) 1. 使用PureComponent代替Component 在新建组件的时候需要继承Component会用到以下代码 import React,{Componen ...

  5. 不定期更新的IDEA功能整理

    目录 不定期更新的IDEA功能整理 idea 命令 Preferences 和 Project Structure Keymap HTTP Proxy Postfix Completion 插件 插件 ...

  6. 采用异步来实现重新连接服务器或者重新启动服务 C#中类的属性的获取 SignalR2简易数据看板演示 C#动态调用泛型类、泛型方法 asp .net core Get raw request. 从壹开始前后端分离[.NetCore 不定期更新] 38 ║自动初始化数据库

    采用异步来实现重新连接服务器或者重新启动服务 开启异步监听,不会导致主线程的堵塞,在服务异常断开后一直检测重新连接服务,成功连接服务后通知各个注册的客户端! #region 检测断线并重连OPC服务 ...

  7. JavaScript中的小陷阱(不定期更新。。)

    1. var scores = [1, 2, 3]; var total = 0; for (var score in scores) { total += score; } var mean = t ...

  8. Keras 文档阅读笔记(不定期更新)

    目录 Keras 文档阅读笔记(不定期更新) 模型 Sequential 模型方法 Model 类(函数式 API) 方法 层 关于 Keras 网络层 核心层 卷积层 池化层 循环层 融合层 高级激 ...

  9. GOM通区插件-支持GOM绝对路径-读取配置项-分割字符等功能。不定期更新

    A-A+ 2019年07月19日 Gom引擎 阅读 45 views 次   [@Main] #IF #SAY [<读配置项/@读配置项>] [<写配置项/@写配置项>] [& ...

随机推荐

  1. robotframework常见报错记录

    1.'Response' object has no attribute '__getitem__':'Response'对象没有属性' getitem__' response对象的属性r.statu ...

  2. android 直接添加一个Fragment到activity,不需要额外setContentView

    getSupportFragmentManager().beginTransaction().replace(android.R.id.content,new ArticleListFragment( ...

  3. HTML表格显示的笔记

    有时需要显示的复杂表头 如图所示  <table id="" cellpadding="0" cellspacing="0" bord ...

  4. python 删除git Jenkinsfile文件

    背景:在做ci集成的发现分支超过100个之后,pipline activity列表中前期的分支会被隐藏,这导致master分支在活动视图中不可见 解决方案:删除历史分支的Jenkinsfile 分支太 ...

  5. ECMAScript基本语法——③数据类型

    Java内有两种 基本数据类型:4类八种 引用数据类型:对象 JavaScript也有两种 原始数据类型 其实是基本数据类型 number:数字.整数.小数.NaN(特殊的数字,not a numbe ...

  6. Python之路Day06

    小数据池 == 判断两个值是否相等 is -- 是,判断两边的内存地址是否相同 a=10 b=10 print(a is b) id() -- 查看内存地址 代码块 一个py文件,一个函数,一个模块, ...

  7. visual env VS conda environment of python

    1. There's two types of python environment in pycharm: virtualenv Environment conda environment For ...

  8. HTML5使用JavaScript控制<audio>音频的播放

    1.播放音乐最简单的样例 <audio controls> <source src="horse.mp3" type="audio/mpeg" ...

  9. C++-怎样写程序(面向对象)

    使用编程语言写好程序是有技巧的. 主要编程技术: 1. 编程风格 2. 算法 3. 数据结构 4. 设计模式 5. 开发方法 编程风格指的是编程的细节,比如变量名的选择方法.函数的写法等. 算法是解决 ...

  10. C语言-数组指针与指针数组

    1.思考 下面这些声明合法吗? int array[5]; int matrix[3][3]; int * pa = array; int * pm = matrix; 问题: array代表数组首元 ...