簡體   English   中英

Ruby Mechanize登錄無法正常工作

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

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