[英]Mechanize submit login form from http to 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代理進行http / https流量(在環境中設置 - Linux機器)
2)我用Wireshark觀察了流量,我可以確認流量是通過普通HTTP發送的(我可以看到POST的內容,機械化不會像webbrowser那樣向代理發送相同的請求 - 后者發送連接login.us.site.com:443,同時僅機械化POST https://login.us.site.com )。 但是,我不知道數據離開代理時會發生什么; 也許它建立了與目標站點的ssl連接?
mechanize
內部使用urllib2
,后者有一個bug: HTTPS over(Squid)代理失敗 。 該錯誤在Python 2.6.3中得到修復,因此更新Python應該可以解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.