国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Python結合NC.exe實現模擬登錄&批量填表

2019-11-14 17:18:52
字體:
來源:轉載
供稿:網友

1.工作需求

有很多事項,每個事項分為:名稱、種類。時間等,需要把每個事項逐個輸入到網頁中并提交。

如果用人肉操作的話,流程就是先登錄到網站后臺,點擊“添加”——>輸入各項內容——>點擊“保存”。然后重復這個動作100遍。如圖:

 

2.設想的解決辦法

對手工“登錄”、“添加”、“保存”的全過程進行抓包,獲取整個流程提交的數據,然后將其POST到服務器。

 

3.具體操作

  3.1 抓取并分析操作時的數據

使用Chrome瀏覽器,打開所需登錄的頁面:http://222.000.36.113/ ,并輸入賬號與密碼:

然后按下鍵盤的F12,瀏覽器彈出“開發者工具”的界面,選擇"Network":

然后將鼠標移回登錄窗口,點擊“登陸”。然后“開發者工具”界面會出現POST和GET的文件與數據,找出登錄對應的文件,點選Header標簽。

此時在Form Data里面能看到POST到服務器的參數(明文密碼,汗):

登錄進去之后,點擊“添加”按鈕,出來一個表單界面,讓填寫內容。開始填寫各項內容ing(截圖只是內容一部分):

辛苦填完之后,點擊“保存”。內容就保存在了服務器中。

此時在“開發者工具”里面就能看到點擊“保存”按鈕后,瀏覽器的行為:

這次POST的數據類型和登錄時的不同了(見紅色方框)。

登錄時是Form Data,而提交時卻是Request Payload。

(這一點在之后的操作中難倒了我。我不會用Python的Requests模塊提交這些數據。因為我不知道如何加上Cookie)

以上就是登錄+提交的全程。

  3.2編程實現

    3.2.1 模擬登錄獲取Cookie

經過我多次試驗,發現提交這些數據需要用到Cookie。i所以先模擬登錄獲取Cookie:

import httplibimport urllib#定義請求頭reqheaders={'Content-type':'application/x-www-form-urlencoded','Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8','Host':'222.000.36.113','Origin':'http://222.000.36.113','Referer':'http://222.000.36.113/login_loginOut.fdo','User-Agent':'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36',}#定義post的參數reqdata={'tnnd':'abcdef','tmmd':'mimaQQq'}

#對請求參數進行編碼data=urllib.urlencode(reqdata)#連接到服務器conn=httplib.HTTPConnection('222.000.36.113')#提交登錄的post請求conn.request('POST', '/login_loginIn.fdo', data, reqheaders)#打印服務器返回請求頭中設置的cookiePRint(res.getheader('Set-Cookie'))

   3.2.2模擬提交

所需提交的Request Payload屬于 Multipart-Encoded 格式,在Python的文檔里有記載:

 http://docs.python-requests.org/en/latest/user/quickstart/

文檔中的操作方法是:
url = 'http://httpbin.org/post'files = {'file': open('report.txt', 'rb')}r = requests.post(url, files=files)r.text

其中 report.txt 里面就是上圖的Request Payload 下方的一長串字符內容。

可是我按照文檔進行操作的時候不成功,是因為服務器需要Cookie而我沒加上?那么Requests這個方法怎么加上Cookie呢?

 

于是我使用了多年前滲透測試中的一個技巧:

a.先把瀏覽器提交過程中所有POST的內容全部抓了下來,保存為“1.txt”。用的是WSockExpert。

b.使用NC,“nc  222.000.36.113  80  < 1.txt”,把txt的內容全部提交到目標服務器。

經測試,此方法可行。但要注意兩點:

一是Cookie要有效??梢杂赡M登錄的步驟中獲取。

二是1.txt 的編碼格式為UTF-8,不然提交的內容全是亂碼!

(第二條當時百思不得其解,最終人肉測試了出來。最后才發現response headers寫的是charset=UTF-8,忽略了,汗)

 

那就用Python來調用NC吧:

import osos.system("nc  222.000.36.113  80  < 1.txt")

剩下的工作,就是將各個事項匯總到一起,然后用Python將對應的事項內容替換到1.txt的那一套格式里面,逐個提交100次!

 

PS

請問一下如何用Python提交這個Request Payload?調用NC太不優雅了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潜江市| 桐梓县| 桦川县| 金坛市| 青岛市| 延庆县| 漾濞| 祁连县| 阳新县| 夏邑县| 屯昌县| 三原县| 昭觉县| 肇庆市| 社旗县| 潜山县| 舞阳县| 兰溪市| 阿勒泰市| 梓潼县| 肥乡县| 绥江县| 运城市| 宝丰县| 蒲江县| 洛南县| 丁青县| 临澧县| 东兰县| 富源县| 麻阳| 修文县| 邓州市| 库车县| 大冶市| 黄平县| 洪洞县| 衢州市| 太谷县| 托克托县| 辽阳市|