我想用Python來模擬一個登錄動作,它通過HTTP GET方法獲取一些消息。所以我寫這樣的事情使用Python urllib.urlopen準確發送數據
from urllib.request import urlopen, Request
urlopen(Request(URL, data=data_for_verify.encode(), method='GET'))
的問題是,它不會做同樣作爲一個真正的登錄操作,其像這樣(從從無到有Wireshark的,HTTP打印數據只)
GET /rjsdcctrl?mac%3dfcaa14ec56f3%26ipv4%3d1681312010%26ipv61%3d0%26ipv62%3d0%26ipv63%3d0%26ipv64%3d0%26product%3d33554432%26mainver%3d67108864%26subver%3d1610612736 HTTP/1.1
Accept: text/*
User-Agent: HttpCall
Accept-Language: en-us
Host: 10.0.6.251
Cache-Control: no-cache
而且什麼我的程序所做的是:
GET/HTTP/1.1
Accept-Encoding: identity
Content-Type: application/x-www-form-urlencoded
Host: 10.0.6.251:80
User-Agent: Python-urllib/3.4
Connection: close
Content-Length: 161
rjsdcctrl?mac%3dfcaa14ec56f3%26ipv4%3d1681312010%26ipv61%3d0%26ipv62%3d0%26ipv63%3d0%26ipv64%3d0%26product%3d33554432%26mainver%3d67108864%26subver%3d1610612736
一個真正的登錄操作有頭至上,不具備行GET/HTTP /1.1
或者它只是一個沒有內容的頭,而第一行GET包含真正的請求消息。我怎樣才能模擬使用Python的urllib? 我使用Python 3.4
我會建議使用請求(http://docs.python-requests.org/)像這樣 –
任務作爲@Daniel的GET請求規定應將參數添加到網址。使用'data'參數實際上會發送請求主體中的數據。同樣要使用'headers',你可以使用關鍵字參數標題例如'urlopen(url,headers = my_headers)'。 – Amyth