[#48875] MechanizeでNAVERへの自動loginスクリプトでpasswordがうまく渡らない — Takahiro Yamaguchi <Takahiro.Yamaguchi@...>

9 messages 2012/08/08

[#48876] ツイートの文字コード変換について — konoki-nannoki-ggrks.mp4@...

こんにちは。

9 messages 2012/08/08

[#48895] rvmで、1.8.7と1.9.2の両方を使い分けたいのですが — Fumiaki Sakamoto <ua6ta6@...>

お世話になっております。

10 messages 2012/08/13

[ruby-list:48909] Re: MechanizeでNAVERへの自動loginスクリプトでpasswordがうまく渡らない

From: Koutarou Tanaka <from.kyushu.island@...>
Date: 2012-08-17 04:21:00 UTC
List: ruby-list #48909
たなかと申します。

WSH/JavaScriptの例で挙げられているブログを見るところ、IEを利用していますので
JSがそのまま動作します。
対するMechanizeはHTMLしか見ておらず、JSは全く動作しません。
ですので、JSで書かれている処理をRubyで実装してやる必要があります。

On Fri, 17 Aug 2012 12:18:27 +0900
Takahiro Yamaguchi <Takahiro.Yamaguchi@jp.sony.com> wrote:

> 
> ユグさん
> 
> ご教示有難うございます。
> 
> At Fri, 17 Aug 2012 07:58:00 +0900,
> ユグドラシル <yuggrdrasill@gmail.com> wrote:
> 
> [...]
> 
> > ちらっとNeverのソースを見た限りでは、
> > jsでRSA APIにメアドとpassを投げて暗号化してから送信しているようなので、
> > 同様のことをしなければならないように思います。
> > jsにencryptedLoginFormParam.val()なんて名前がありました。
> 
> 以下の部分ですよね。
> 
> <script> 
> $().ready(function() {
>     new nj.account.initLoginForm();
>     lcs_do();
> });
> function formSubmit(evt){
> 	evt.preventDefault ? evt.preventDefault() : evt.returnValue = false;
> 	
> 	if(!$("#_naver_login_form").valid()){
> 		return false;
> 	}
> 
> 	var sRsaKeysApi = "/keys";
> 	nj.account.crypto.initRsaKeys(sRsaKeysApi, function(){
> 		if(!nj.account.crypto.hasRsaKeys()){
> 			return false;
> 		}
> 		var email = $("#_email");
> 		var password = $("#_passwd");
> 		var encryptedLoginParam = $("#ipt_login_param_encrypt");
> 		var emailval = $.trim(email.val()), passval = $.trim(password.val());
> 		encryptedLoginParam.val(nj.account.crypto.rsaEncrypt(("0" + emailval.length).slice(-2) + emailval + passval, true));
> 		
> 		email.attr('disabled','disabled');
> 		password.attr('disabled','disabled');
> 		password.val("");
> 		
> 		var oKeys = nj.account.crypto.getSplitRsaKey();
> 		$("#rsaKeyName").val(oKeys.keyname);
>  
> 		if(encryptedLoginParam.val() == "" && email.val() != ""){
> 			init();
> 			email.val("");
> 			var errorMessage = $("#login_error");
> 			errorMessage.html("");
> 			return false;
> 		}
> 		email.val("");
> 		$("#_naver_login_form")[0].submit();
> 		
> 	});
> 	
> 	return false;
> }
> function init(){
> 	$("#_email").attr('disabled', '');
> 	$("#_passwd").attr('disabled', '');
> 	$("#ipt_login_param_encrypt").val("");
> }
> </script>
> 
> ちなみに、Ruby+Mechanizeではないですが、wsh/javascript
> <http://d.hatena.ne.jp/plasticgrammer/20070315/1173939911>を参考に、
> weblogin.js のファイル名で保存し、USER/PASSを設定してやると自動loginで
> きるので、Ruby+Mechanizeでもpasswordが渡れば動くような気がしているのですが...
> 
> // ログイン画面
> var URL_LOGIN = "https://ssl.naver.jp/login?fromUrl=http%3A%2F%2Fndrive.naver.jp%2F"
> var TITLE = "Yahoo!メール";
> var USER  = "xxxx";
> var PASS  = "yyyy";
> 
> var WshShell = WScript.CreateObject("WScript.Shell");
> 
> var ie = WScript.CreateObject("InternetExplorer.Application");
> ie.visible = true;
> //ie.height = 600;
> //ie.width = 800;
> //ie.menubar = false;
> //ie.toolbar = false;
> //ie.statusbar = false;
> //ie.resizable = false;
> ie.navigate(URL_LOGIN);
> while (ie.busy) {WScript.Sleep(500);}
> 
> WScript.Sleep(200);
> WshShell.AppActivate(TITLE);
> WScript.Sleep(100);
> // タブの数とかを各画面に合わせる必要有り
> WshShell.SendKeys(USER + "{TAB}");
> WshShell.SendKeys(PASS + "{TAB}");
> WshShell.SendKeys("{TAB}{ENTER}");
> 
> -- 
> Takahiro Yamaguchi
> 

In This Thread