은 기본적으로 기계화는 JS를 지원하지 않지만, 자바 스크립트 :: SpiderMonkey를하고 WWW : : 기계화 : PluginJavascript 같은 것이있다.
그러나 웹 사이트에서 JS를 찾아 일반 바닐라 Mechanize로 그 동작을 모방하는 것이 더 쉬울 것이라고 생각합니다.
DoLogin JS는 그렇게 복잡하지 않으므로이를 기반으로 Mechanize 논리를 계속 작성할 수 있습니다. https://steamcommunity.com/public/javascript/login.js?v=264288658&
function DoLogin()
{
var form = document.forms['logon'];
var username = form.elements['username'].value;
username = username.replace(/[^\x00-\x7F]/g, ''); // remove non-standard-ASCII characters
var password = form.elements['password'].value;
password = password.replace(/[^\x00-\x7F]/g, ''); // remove non-standard-ASCII characters
if (g_bLoginInFlight || password.length == 0 || username.length == 0)
return;
g_bLoginInFlight = true;
$('login_btn_signin').hide();
$('login_btn_wait').show();
new Ajax.Request('https://steamcommunity.com/login/getrsakey/',
{
method: 'post',
parameters: {
username: username,
donotcache: (new Date().getTime())
},
onSuccess: OnRSAKeyResponse,
onException: function(req, e) { throw e; }
}
);
}
편집 : 여기서 RSA 키 기능 코드
function OnRSAKeyResponse(transport)
{
var results = transport.responseJSON;
if (results.publickey_mod && results.publickey_exp && results.timestamp)
{
var form = document.forms['logon'];
var pubKey = RSA.getPublicKey(results.publickey_mod, results.publickey_exp);
var username = form.elements['username'].value;
username = username.replace(/[^\x00-\x7F]/g, ''); // remove non-standard-ASCII characters
var password = form.elements['password'].value;
password = password.replace(/[^\x00-\x7F]/g, ''); // remove non-standard-ASCII characters
var encryptedPassword = RSA.encrypt(password, pubKey);
new Ajax.Request('https://steamcommunity.com/login/dologin/',
{
method: 'post',
parameters: {
password: encryptedPassword,
username: username,
emailauth: form.elements['emailauth'].value,
loginfriendlyname: form.elements['loginfriendlyname'].value,
captchagid: form.elements['captchagid'].value,
captcha_text: form.elements['captcha_text'].value,
emailsteamid: form.elements['emailsteamid'].value,
rsatimestamp: results.timestamp,
remember_login: (form.elements['remember_login'] && form.elements['remember_login'].checked) ? 'true' : 'false',
donotcache: (new Date().getTime())
},
onSuccess: OnLoginResponse,
onException: function(req, e) { throw e; }
}
);
}
증기가 [API]을 제공하고있다 (http://steamcommunity.com/dev). – jordanm