[#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:48908] Re: MechanizeでNAVERへの自動loginスクリプトでpasswordがうまく渡らない

From: Takahiro Yamaguchi <Takahiro.Yamaguchi@...>
Date: 2012-08-17 03:18:27 UTC
List: ruby-list #48908
ユグさん

ご教示有難うございます。

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