簡體   English   中英

機械化將登錄表單從http提交到https

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM