Symfoware

Symfowareについての考察blog

Ruby MechanizeでNTLM Authentication

Python + mechanizeでNTLM認証してみました。
Python Windows認証サイト(NTLM認証)をmechanizeで操作する


Ruby製のMechanizeでも同様のことができるか試してみます。


サンプルコード



ドキュメントを見てみると
http://mechanize.rubyforge.org/Mechanize.html

NTLM認証に対応しているようです。


  1. add_auth(uri, user, password, realm = nil, domain = nil)




Python版と同等のコードを書いて動かしてみました。


  1. require 'mechanize'
  2. agent = Mechanize.new
  3. agent.add_auth('http://192.168.1.10', 'Administrator', 'P@ssw0rd', nil, 'test.local')
  4. page = agent.get('http://192.168.1.10/test/input.aspx')
  5. form = page.forms[0]
  6. form.input_1 = 'hoge'
  7. form.input_2 = 'piyo'
  8. ret = form.click_button()
  9. puts ret.body




実行結果


$ ruby sample.rb

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>form入力結果</title>
</head>
<body>
    <div>input_1:hoge</div>
    <div>input_2:piyo</div>
    <div>value:登録</div>
</body>
</html>




無事動いてくれました。


ちなみに、引数の指定が誤っていると、こんなエラーになります。


`response_authenticate': 401 => Net::HTTPUnauthorized for http://192.168.1.10/test/input.aspx
-- NTLM authentication failed -- available realms: (Mechanize::UnauthorizedError)




そういえば、調査途中でruby-ntlmをインストールしました。
ruby-ntlm

上記のコードで動かない場合は、これが必要だったのかも。
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2016/01/24(日) 18:04:15|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Python 軽量ドキュメントデータベース TinyDB | ホーム | Python Windows認証サイト(NTLM認証)をmechanizeで操作する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1829-f87f1345
この記事にトラックバックする(FC2ブログユーザー)