我有一個包含通過HTTP加載的登錄表單的網頁,但它通過HTTPS提交數據。機械化從http提交登錄表單到https
我正在使用python-mechanize登錄到這個網站,但它似乎是通過HTTP提交的數據。
我的代碼看起來是這樣的:
import mechanize
b = mechanize.Browser()
b.open('http://site.com')
form = b.forms().next() # the login form is unnamed...
print form.action # prints "https://login.us.site.com"
form['user'] = "guest"
form['pass'] = "guest"
b.form = form
b.submit()
當提交表單時,在建立連接通過HTTP和含有類似:
send: 'POST https://login.us.site.com/ HTTP/1.1\r\nAccept-Encoding: identity\r\nContent-Length: 180\r\nHost: login.us.site.com\r\nContent-Type: application/x-www-form-urlencoded\r\n\r\n'...
任何人都可以證實這一點,並最終發佈解決方案,以便通過HTTPS提交表單?
後來編輯:
1)我使用HTTP/HTTPS流量HTTP代理(在環境中設置 - Linux機器)
2)我看過流量使用Wireshark,我可以確認流量是通過普通的HTTP發送的(我可以看到POST的內容,機械化不會像webbrowser一樣向代理髮送相同的請求 - 後者發送CONNECT login.us.site.com:443,而僅僅機械化職位https://login.us.site.com)。但是,我不知道數據在離開代理時會發生什麼,也許它建立了一個到目標站點的ssl連接?
您的形式,似乎通過HTTPS提交。 – SilentGhost
爲了以後的讀者的利益: - 不好的做法是將一個頁面通過http post發送到https url。在默認配置中,IE(例如)會在這種情況下產生一個警告。如果它在您的控制之下,您應該提交與提交時相同的主機名和協議。這也爲用戶提供了令人放心的掛鎖圖標。 (這是對中間人攻擊的防禦 - 如果表單是通過HTTP,MIM攻擊者可以改變表單並且可以注入JavaScript來控制你提交給HTTPS URL的內容)。 – Ben