[英]Ruby Mechanize login not working
讓我為我要完成的任務打下基礎。 在我參加的物理課程中,我的老師總是喜歡吹噓在課堂上作弊是多么不可能,因為她的所有作業都是通過WebAssign完成的。 WebAssign的工作方式是這樣的:每個人都遇到相同的問題,但是問題中使用的數字是隨機變量,因此每個學生都有不同的數字,因此答案也不同。 因此,我一直在編寫ruby腳本,只需輸入您的具體數字即可解決人們的問題。
我想使用機械化來自動執行此過程。 之前,我已經進行過很多次機械化操作,但是登錄該站點時遇到了麻煩。 我將提交表單,它返回與我剛才所在的頁面相同的頁面。 您可以在http://webassign.net上查看該網站的源代碼,我也嘗試過在http://webassign.net/login.html上使用登錄名,但也沒有運氣。
讓我用一些紅寶石代碼來跟蹤所有這些事情,這些代碼並沒有實現我想要的功能:
require 'rubygems'
require 'mechanize'
agent = Mechanize.new
page = agent.get("http://www.webassign.net/login.html")
form = page.forms.last
puts "Enter your username"
form.WebAssignUsername = gets.chomp
puts "Enter your password (Don't worry, we don't save this)"
form.WebAssignPassword = gets.chomp
form.WebAssignInstitution = "trinityvalley.tx"
form.submit #=> Returns original page
如果有人真的想讓它生效,我很樂意向他們發送有效的用戶名和密碼。
該站點可能正在檢查是否已設置“ Login
帖子變量(請參見登錄按鈕)。 嘗試添加form.Login = "Login"
。
您是否嘗試過使用agent.submit(form, form.buttons.first)
而不是form.submit
?
當我嘗試提交表單時,這對我有用。 我嘗試首先使用form.submit
,它一直返回原始頁面。
嘗試設置用戶代理:
agent = Mechanize.new do |a|
a.user_agent_alias = 'Mac Safari'
end
有些網站似乎要求這樣做。
您的問題似乎有點模棱兩可,說您沒有任何運氣? 到底是什么問題? 與在瀏覽器中查看頁面時相比,您得到的響應完全不同嗎? 如果是這樣,請執行@cam所說的並分析標題,您可以通過擴展程序在Firefox中進行操作,也可以在Chrome中以本機方式進行操作。 無論哪種方式,都嘗試模仿在機械化用戶代理中使用的任何瀏覽器中看到的標頭。 這是我在數據商店中進行數據挖掘時用來模仿iTunes請求標頭的腳本:
def mimic_itunes( mech_agent )
mech_agent.pre_connect_hooks << lambda {|headers|
headers[:request]['X-Apple-Store-Front'] = X_APPLE_STOREFRONT;
headers[:request]['X-Apple-Tz'] = X_APPLE_TZ;
headers[:request]['X-Apple-Validation'] = X_APPLE_VALIDATION;
}
mech_agent.user_agent = 'iTunes/9.1.1 (Windows; Microsoft Windows 7 x64 Business Edition (Build 7600)) AppleWebKit/531.22.7'
mech_agent
end
注意:示例中的常量只是字符串...它們的含義並不重要,只要您知道可以在其中添加任何字符串
使用這種方法,您應該能夠更改/添加Web應用程序可能需要的任何標題。
如果這不是您遇到的問題,請發布更確切的詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.