Python結合NC.exe 實現類比登入&批量填表

來源:互聯網
上載者:User

標籤:

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.143.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/#post-a-multipart-encoded-file

文檔中的操作方法是:
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要有效。可以由類比登入的步驟中擷取。

二是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太不優雅了。

Python結合NC.exe 實現類比登入&批量填表

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.