2011-01-11 184 views
1

讓我爲我正在努力完成的任務設定舞臺。在我參加的一個物理課上,我的老師總是喜歡吹噓在班上作弊是不可能的,因爲她的所有作業都是通過WebAssign完成的。 WebAssign的工作方式是這樣的:每個人都會得到相同的問題,但問題中使用的數字是隨機變量,因此每個學生都有不同的數字,因此是不同的答案。所以我一直在寫ruby腳本來解決人們的問題,只需輸入你的具體數字即可。Ruby機械化登錄不起作用

我想使用機械化來自動化這個過程。我之前使用過很多次機械化,但我無法登錄到該網站。我會提交表單,它會返回我剛纔的頁面。你可以看看網站的源代碼,在http://webassign.net,我也嘗試使用登錄http://webassign.net/login.html沒有運氣。

讓我跟着這一切了一些Ruby代碼是沒有做什麼,我希望它:

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 

如果有人真的需要在得到這個有興趣的工作,我會超過很高興向他們發送一個可用的用戶名和密碼。

+0

你確定這是個好主意嗎? – 2011-01-12 00:00:41

+0

@Isaac我沒有看到任何錯誤向老師證明設置是不安全的。這就是他似乎在做的事情。 – marcog 2011-01-12 00:02:36

+1

當我遇到這樣的問題時,我使用firefox登錄並使用Live Headers擴展名記錄所有標題。然後我將結果與機械化進行比較。 – cam 2011-01-12 00:36:00

回答

3

該網站可能正在檢查Login帖子變量是否已設置(請參閱登錄按鈕)。嘗試加入form.Login = "Login"

1

嘗試將用戶代理:

agent = Mechanize.new do |a| 
    a.user_agent_alias = 'Mac Safari' 
end 

有些網站似乎要求。

1

你的問題似乎有點含糊,說你沒有運氣?究竟是什麼問題?您是否完全獲得與在瀏覽器中查看頁面時不同的響應?如果是這樣,然後做@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應用程序可能需要的任何標題。

如果這不是您遇到的問題,那麼請發佈更深入的詳細信息。

3

您是否嘗試過使用agent.submit(form, form.buttons.first)而不是form.submit

當我嘗試提交表單時,這對我有用。我首先嚐試使用form.submit,並且它一直返回原始頁面。