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'>>> headert': '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.textu'[{"repository":{"open_issues":0,"url":"https://github.com/... |
Request得到他自己推测的文章编码
当然你可以用r.encoding来设置!
|
1
2
|
>>> r.contentb'[{"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 2014 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-8import requestsimport reimport 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 Falseif __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:utf8import requestsimport hashlibimport 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 ...
随机推荐
- elk安装最佳实践
一.添加清华源 .x.repo<<EOF [elasticsearch-.x] name=Elasticsearch repository .x packages baseurl=http ...
- Python中print/format字符串格式化实例
Python 字符串格式化使用 "字符 %格式1 %格式2 字符"%(变量1,变量2),%格式表示接受变量的类型.简单的使用例子如下 # 例:字符串格式化Name = '17jo' ...
- 一个想休息的线程:JVM到底是怎么处理锁的?怎么不让我阻塞呢?
我是一个线程,生活在JVM(Java虚拟机)中, 这一段日子过得有些无聊,整个世界似乎只有这一个人,天天忙着执行代码,想休息一下都很难. 我听说人类写的代码中有些特殊的地方,叫做临界区,比如synch ...
- matplotlib之scatter绘制散点
# 使用matplotlib.pyplot.scatter绘制散点 import matplotlib.pyplot as plt from pylab import mpl # 设置默认字体,解决中 ...
- BZOJ1014 JSOI2008火星人(splay+哈希)
splay维护哈希值即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstd ...
- BZOJ2001 HNOI2010城市建设(线段树分治+LCT)
一个很显然的思路是把边按时间段拆开线段树分治一下,用lct维护MST.理论上复杂度是O((M+Q)logNlogQ),实际常数爆炸T成狗.正解写不动了. #include<iostream> ...
- Dapper 连表查询
实体类: UserInfo: public partial class UserInfo { public UserInfo() { this.Persion = new HashSet<Per ...
- Spring bean默认为单例模式会引发并发问题吗
在web项目中使用spring,如果网站同时很多人访问,这时候使用spring默认的单例模式的bean是否合适呢?回不回影响效率或者产生交叉呢? Spring默认的单例模式的bean,因为是单例的,所 ...
- hdu 3949 XOR (线性基)
链接: http://acm.hdu.edu.cn/showproblem.php?pid=3949 题意: 给出n个数,从中任意取几个数字异或,求第k小的异或和 思路: 线性基求第k小异或和,因为题 ...
- 【刷题】BZOJ 1132 [POI2008]Tro
Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10 ...