写在前面
在渗透中经常要用到脚本来验证漏洞,所以我打算根据漏洞原理,从零开始写一系列脚本。但是python2和python3中还是比较纠结,python2的urllib2显然对这方面更友好一些,但是python2已经是上一个时代的产物,所以这边准备使用python3进行编写。
环境配置
首先要安装ide,这里我选用的PyCharm,不懂的朋友可以参考这一篇博客
然后我们再安装python3.7,自动添加好环境变量以后用pip安装环境变量
requests的使用
首先我们尝试用requests获取一个网页的信息
我们要导入requests模块
import requests
然后尝试获取某个网页
r = requests.get('http://wwww.baidu.com')
最后输出结果
print(r.text)
然后我们尝试运行一下代码,它就输出了百度的网页内容。
这就用python3完成了最简单的get请求了,但是如果我们要发送post请求要怎么办呢?为此我们先搭建一个php环境用来做python脚本的测试。
<?php
echo 'post php test';
echo $_POST['a'];
然后我们先运行
import requests
r = requests.get('https://test.kolue.com/post.php')
print(r.text)
这个时候的输出结果是
C:\Users\Mypc\AppData\Local\Programs\Python\Python37\python.exe C:/Users/Mypc/PycharmProjects/test/.idea/test.py
post php test
然后我们尝试通过post的方式提交数据到post.php这个文件,这个时候我们使用的是requests.post,而这个函数则需要带上post的数据
import requests
r = requests.post('https://test.kolue.com/post.php',data={'a':'requests post test'})
print(r.text)
输出结果
C:\Users\Mypc\AppData\Local\Programs\Python\Python37\python.exe C:/Users/Mypc/PycharmProjects/test/.idea/test.py
post php testrequests post test
我们会发现用于获取结果的是r.text,但是在安全工具的开发中,我们往往有时候不需要获取这些结果集,只需要获取他的状态,比如目录扫描工具,我们只需要获取他的状态码。
import requests
r = requests.post('https://test.kolue.com/post.php',data={'a':'requests post test'})
print('网页的响应状态是:'+str(r.status_code))
print('网页的内容是:'+str(r.text))
print('网页的编码是:'+str(r.apparent_encoding))
其中response对象有以下属性:
属性 | 说明 |
r.status_code | http请求的返回状态,若为200则表示请求成功 |
r.text | http响应内容的字符串形式,即返回的页面内容 |
r.encoding | 从http header 中猜测的相应内容编码方式 |
r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) |
r.content | http响应内容的二进制形式 |
r.headers | http的响应头内容,可以具体到某个响应头的值 |