寫在前面
在滲透中經常要用到腳本來驗證漏洞,所以我打算根據漏洞原理,從零開始寫一系列腳本。但是python2和python3中還是比較糾結,python2的urllib2顯然對這方面更友好一些,但是python2已經是上一個時代的產物,所以這邊准備使用python3進行編寫。
環境配置
首先要安裝ide,這里我選用的PyCharm,不懂的朋友可以參考這一篇博客
https://blog.csdn.net/u014044812/article/details/78727496
然后我們再安裝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的響應頭內容,可以具體到某個響應頭的值 |