0x00前言

这库让我爱上了python  碉堡!

开心去学了一些python,然后就来学这个时候神库~~

资料来源:http://cn.python-requests.org/en/latest/user/quickstart.html

写上自己学习笔记

加上import requests

就可以开心的用这个库了!

+++++++++++++++++++++++++++++++++++++++++++++++++++

0x01请求篇

一)各种请求类型

1
2
3
4
5
6
>>> r = requests.put("http://blog.wils0n.cn/index.php")
>>> r = requests.delete("http://blog.wils0n.cn/index.php")
>>> r = requests.head("http://blog.wils0n.cn/index.php")
>>> r = requests.options("http://blog.wils0n.cn/index.php")
>>> r = requests.post("http://blog.wils0n.cn/index.php")
>>> r = requests.get("http://blog.wils0n.cn/index.php")

很漂亮哦~~~

二)传递参数:

用一个dict,字典数据类型就ok了

Get:

1
2
3
4
5
>>> import requests
>>> payload={'id':'1'}
>>> r=requests.get("http://blog.wils0n.cn",params=payload)
>>> r.url

Post

1
2
3
>>> import requests
>>> payload={'id':'2'}
>>> r=requests.post("http://blog.wils0n.cn",payload)#可以不要params,或者加上data=payload

三)修改http头

我们常常要修改http包头的数据

还是可以用一个dict来填充着头

1
2
3
4
5
6
>>> header['User-Agent':'baidupaida']
>>> header['User-Agent']='baidupaida'
>>> header
{'X-FORWARDED-FOR''192.168.1.1''Referer''http://www.baidu.com', 'User-Agen
t': 'baidupaida'}
>>> r=requests.get("http://blog.wils0n.cn",headers=header)

四)修改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 = requests.get('https://github.com/timeline.json')
>>> 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
= 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内容
    r=requests.post('http://aiisoo.com//somd5-index-md5.html',data=payload)
    #处理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库学习的更多相关文章

  1. Python3 urllib.request库的基本使用

    Python3 urllib.request库的基本使用 所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地. 在Python中有很多库可以用来抓取网页,我们先学习urlli ...

  2. 爬虫——urllib.request库的基本使用

    所谓网页抓取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地.在Python中有很多库可以用来抓取网页,我们先学习urllib.request.(在python2.x中为urllib2 ...

  3. Python网络爬虫与信息提取[request库的应用](单元一)

    ---恢复内容开始--- 注:学习中国大学mooc 嵩天课程 的学习笔记 request的七个主要方法 request.request() 构造一个请求用以支撑其他基本方法 request.get(u ...

  4. python 操作exls学习之路1-openpyxl库学习

    这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据.Python处理表格的库有很多,这里的openpyxl就是其中之一,但是它是处理excel2007/2010的格式,也 ...

  5. dlib库学习之一

    dlib库学习之一 1.介绍 跨平台 C++ 通用库 Dlib 发布 ,带来了一些新特性,包括概率 CKY 解析器,使用批量同步并行计算模型来创建应用的工具,新增两个聚合算法:中国低语 (Chines ...

  6. python requests库学习笔记(下)

    1.请求异常处理 请求异常类型: 请求超时处理(timeout): 实现代码: import requestsfrom requests import exceptions        #引入exc ...

  7. python_库学习_01

    一.python的库学习之 财经数据接口包 1.安装ThShare 直接pip install tushare 可能会出现缺少依赖库的情况,依次安装,大概有lxml,pandas,bs4,reques ...

  8. numpy, matplotlib库学习笔记

    Numpy库学习笔记: 1.array()   创建数组或者转化数组 例如,把列表转化为数组 >>>Np.array([1,2,3,4,5]) Array([1,2,3,4,5]) ...

  9. Python request库与爬虫框架

    Requests库的7个主要方法  requests.request():构造一个请求,支持以下各方法的基础方法  requests.get():获取HTML网页的主要方法,对应于HTTP的GET  ...

随机推荐

  1. 面象对象设计原则之六:迪米特原则(LeastKnowledge Principle, LKP)

    迪米特法则来自于1987年美国东北大学(Northeastern University)一个名为“Demeter”的研究项目.迪米特法则又称为最少知识原则(LeastKnowledge Princip ...

  2. 原生NodeJs制作一个简易聊天室

    准备工作 安装NodeJs环境 安装编译器Sublime 如果网速不理想,可以百度一下如何加快npm的速度~ 使用node搭建一个简单的网站后台 做完准备工作之后,新建文件夹chatroom,在cha ...

  3. Hive三种安装模式

  4. 解决从pip上下载的最新flask版本不能运行flaskr和最新特性的问题

    由于在测试flask的单元测试.所以准备弄个环境,查询官方文档发现flask源码里面有一个example文件夹里面有个flaskr应用 可供测试 看了一下readme文档,大致是这样 / Flaskr ...

  5. 美图美妆由Try Try接手运营

    美图又把一个拖累营收的业务转让出去了. 美图的电商业务——美图美妆应用在向用户发布终止运营的公告后,宣布把业务交给了寺库旗下公司 Try Try 运营.Try Try 接手了美图美妆的所有管理运营权, ...

  6. Can you answer these queries? HDU - 4027(线段树+技巧)

    题意:给一个数组序列, 数组长度为100000 两种操作: 一种操作是将某一个固定区间所有数开方(向下取整) 另一种操作是询问某个区间的所有数字之和. 由于数不超过263,因此开个七八次就变成1,由于 ...

  7. MessageBox函数第一个参数hwnd的作用

    MessageBox 函数用于创建.显示并操作一个消息对话框.该对话框包含由调用程序定义的信息和标题,以及预先定义的图标和按钮. 这个方法的第一个参数hWnd,代表消息框拥有的窗口.这个参数到底有什么 ...

  8. luogu4933 大师 (dp)

    记f[i][j]是以i号为结尾的.公差为j的的个数(不包括只有i的情况) 那么就有$f[i][i-i']=\sum{(f[i'][i-i']+1)}$之类的东西 最后再加个n就行啦 而且公差有可能有负 ...

  9. 1. vim 的安装及配置

    简介 vim是什么 vim是一款功能强大.支持各种插件.配置极为灵活的编辑器,且支持多种主流OS(linux.Unix.mac.windows),可用来各种编程预言的coding和文件编辑,用习惯了v ...

  10. JAVA 泛型方法 和 静态方法泛型

    /* //  泛型方法和静态方法泛型 泛型类定义的泛型 在整个类中有效 如果被方法使用 那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定 为了让不同方法可以操作不同类型  而且类型还 ...