写在前面

在渗透中经常要用到脚本来验证漏洞,所以我打算根据漏洞原理,从零开始写一系列脚本。但是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)

然后我们尝试运行一下代码,它就输出了百度的网页内容。

python识别安全帽 python写安全工具_python识别安全帽

这就用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的响应头内容,可以具体到某个响应头的值