Request库学习
0x00前言
这库让我爱上了python 碉堡!
开心去学了一些python,然后就来学这个时候神库~~
资料来源:http://cn.python-requests.org/en/latest/user/quickstart.html
写上自己学习笔记
加上import requests
就可以开心的用这个库了!
+++++++++++++++++++++++++++++++++++++++++++++++++++
0x01请求篇
一)各种请求类型
1
2
3
4
5
6
|
|
很漂亮哦~~~
二)传递参数:
用一个dict,字典数据类型就ok了
Get:
1
2
3
4
5
|
>>> import requests >>> payload = { 'id' : '1' } >>> r.url |
Post
1
2
3
|
>>> import requests >>> payload = { 'id' : '2' } |
三)修改http头
我们常常要修改http包头的数据
还是可以用一个dict来填充着头
1
2
3
4
5
6
|
>>> header[ 'User-Agent' : 'baidupaida' ] >>> header[ 'User-Agent' ] = 'baidupaida' >>> header t ': ' baidupaida'} |
四)修改cookie
也是可以在这个http头里的
最好用一个dict来之填充cookies
1
2
3
4
5
|
>>> cookies = dict (cookies_are = 'working' ) >>> r = requests.get(url, cookies = cookies) >>> r.text '{ "cookies" : { "cookies_are" : "working" }} |
所以params,data,cookies,header都可以来修改http请求包
+++++++++++++++++++++++++++++++++++++++++++++++++++
0x02响应篇
当我们,改完我的http请求包。这时候,我们就得到一个http响应包对象
1.响应内容
1
2
3
4
|
>>> import requests >>> r.text u'[{ "repository" :{ "open_issues" : 0 , "url" :"https: / / github.com / ... |
Request得到他自己推测的文章编码
当然你可以用r.encoding来设置!
1
2
|
>>> r.content b'[{ "repository" :{ "open_issues" : 0 , "url" :"https: / / github.com / ... |
Requests会自动为你解码 gzip 和 deflate 传输编码的响应数据。
2.获取http响应的状态码
这在爬虫时候比较重要
r.status_code
当然现在有的网页404也是200 = =
要是302那就的用
r.history 来看看
3.获取http响应头信息
直接放在r.headers 这个dics字典里里面了 很方便 嘿嘿~~ 屌死了
1
2
3
4
5
6
|
>>> r.headers { 'content-length' : '201' , 'keep-alive' : 'timeout=5, max=100' , 'server' : 'Apache / 2.2 . 21 (Win32) PHP / 5.3 . 10 ', ' connection ': ' Keep - Alive ', ' date ': ' Tue, 18 Nov 201 4 12 : 20 : 10 GMT ', ' content - type ': ' text / html; charset = iso - 8859 - 1 '} >>> r.headers[ 'server' ] 'Apache/2.2.21 (Win32) PHP/5.3.10' |
#这调用太方便了,php还得匹配.不得不说dics这个数据结构让python如此便捷啊
+++++++++++++++++++++++++++++++++++++++++++++++++++
0x03高级篇 会话
资料来源:http://cn.python-requests.org/en/latest/user/advanced.html#advanced
很多情况下,我们的需要与浏览器多次交换。不仅仅是一两次请求就可以完成的。也就是说我们需要去带上我们的cookie等会话
Requests库为我们创建一个很好用的sessions方法,让我们可以带着我们的会话~~
1
2
3
4
|
s = requests.Session() #返回一个requests的session对象 |
#这时候 我们访问就会带上我们在cookie中的phpsessionid啦~ 表示前后是同一个会话
+++++++++++++++++++++++++++++++++++++++++++++++++++
0x04高级篇 实例篇
1.编写一个利用socmd5来单线程批量破解md5的脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#coding=utf-8 import requests import re import sys #定义破解接口 def md5hacher(md5): payload = { 'isajax' : 'CEuqhtkYjBHjhI_0lS8EwMh' , 'md5' :md5} #填充post内容 #处理python错误 try : result = re.findall( '<h1 style="display:inline;">(.*?)</h1>' ,r.text) return result[ 0 ] except : return False if __name__ = = '__main__' : count = len (sys.argv) if count! = 2 : print "usage: cmd5.py pass.txt" else : filename = sys.argv[ 1 ] #打开函数 d = open (filename, 'r' ) #一行一行读文件 data = d.readline().strip( '\r\n' ) #有回车的 while (data): #调用函数破解md5 password = md5hacher(data) if password: print "{0} is crack {1}" . format (data,password) else : print "%s can't crack by socmd5 " % data data = d.readline().strip( '\r\n' ) |
2.ssctf的某题 解法
题目的意思就是,你访问index.php 的时候密码就在headers头里面。然后你要将这个密码进行md5加密,然后再post给index.php。中间等待你的时间很短,反正你手工是不可能了。我之前用php搞定的。现在写了python,代码短了好多
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#coding:utf8 import requests import hashlib import re __author__ = 'wilson' if __name__ = = "__main__" : #创建session对象 s = requests.session() #get请求获取reponse数据包 #请求头的数据表 这真心好~~~ 不要你去匹配了 password = r.headers[ 'password' ] #md5加密 md5 = hashlib.md5() md5.update(password) password = md5.hexdigest() payload = { 'password' :password} #post数据包,注意这里是用一个session哦~~~ #正则匹配key位置 key = re.findall( "key:(.*?)<!" ,r.content) print "key is %s\r\n" % key[ 0 ] |
Request库学习的更多相关文章
- Python3 urllib.request库的基本使用
Python3 urllib.request库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在Python中有很多库可以用来抓取网页,我们先学习urlli ...
- 爬虫——urllib.request库的基本使用
所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很多库可以用来抓取网页,我们先学习urllib.request.(在python2.x中为urllib2 ...
- Python网络爬虫与信息提取[request库的应用](单元一)
---恢复内容开始--- 注:学习中国大学mooc 嵩天课程 的学习笔记 request的七个主要方法 request.request() 构造一个请求用以支撑其他基本方法 request.get(u ...
- python 操作exls学习之路1-openpyxl库学习
这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据.Python处理表格的库有很多,这里的openpyxl就是其中之一,但是它是处理excel2007/2010的格式,也 ...
- dlib库学习之一
dlib库学习之一 1.介绍 跨平台 C++ 通用库 Dlib 发布 ,带来了一些新特性,包括概率 CKY 解析器,使用批量同步并行计算模型来创建应用的工具,新增两个聚合算法:中国低语 (Chines ...
- python requests库学习笔记(下)
1.请求异常处理 请求异常类型: 请求超时处理(timeout): 实现代码: import requestsfrom requests import exceptions #引入exc ...
- python_库学习_01
一.python的库学习之 财经数据接口包 1.安装ThShare 直接pip install tushare 可能会出现缺少依赖库的情况,依次安装,大概有lxml,pandas,bs4,reques ...
- numpy, matplotlib库学习笔记
Numpy库学习笔记: 1.array() 创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...
- Python request库与爬虫框架
Requests库的7个主要方法 requests.request():构造一个请求,支持以下各方法的基础方法 requests.get():获取HTML网页的主要方法,对应于HTTP的GET ...
随机推荐
- Install odoo 11(10) on centos7
https://www.odoo.com/documentation/11.0/setup/install.html https://nightly.odoo.com/ https://www.odo ...
- MYSQL使用中字符编码一坑
AJAX提交的字符出错,还以为是AJAX配置的错误呢!幸亏检查了一下MYSQL连接的字符集,发现开发库与本地库配置的字符集是也不一样的.
- Jira 自定义工作流
一.添加修改工作流 打开 设置--问题--工作流 复制一个工作流,然后进去编辑页面 添加状态 增加转换动作 切换到文本,设置跳转过程中的事件 针对Stop Progress事件,修改跳转界面(界面需先 ...
- [转帖]Nginx的超时keeplive_timeout配置详解
Nginx的超时keeplive_timeout配置详解 https://blog.csdn.net/weixin_42350212/article/details/81123932 Nginx ...
- awk、sed、grep三大shell文本处理工具之sed的应用
sed 流编辑器 对文本中的行,逐行处理 非交互式的编辑器 是一个编辑器 1.工作流程 1)将文件的第一行读入到自己的缓存空间(模式空间--pattern space),删除掉换行符 2)匹配,看一下 ...
- 使用 jstack 查询线程死锁错误日志 定位问题
定位问题 (1) 首先 找到相应的进程 使用 ps -ef | grep 'com.sankuai.qcs.regulation.dispatch' 找到进程的ID;==>21980 (2) t ...
- mysql DDL&DML 语言
DDL:数据定义语言 CREATE, ALTER, DROP CREATE相关的常用命令: CREATE DATABASECREATE EVENTCREATE FUNCTIONCREATE FUNCT ...
- Intel处理器缺货将会持续到2019年第二季度!
虽然Intel一再承诺加大投资.扩充产能,但一个不争的事实是,Intel处理器仍然都处于大面积紧张的缺货状态中,毕竟10nm迟迟无法规模量产,14nm上拥挤了太多产品线. 按照华硕CEO沈振来的最新说 ...
- 自定义git忽略规则
输入命令 >a.o git status 此时我想让git忽略这个文件的更新 输入命令 > .gitignore echo "a.o" >> .gitign ...
- MT【49】四次函数求最值
已知$f(x)=(1-x^2)(x^2+ax+b)$的图像关于x=3对称,求$f(x)$的最大值. 解答:显然$-1,7;1,5$是$f(x)=0$的根.故$(x^2+ax+b)=(x-5)(x-7) ...