Я хочу войти в систему https://www.t -mobile.com / программно. Моей первой идеей было использовать Mechanize для отправки формы входа в систему:
альтернативный текст http://dl.dropbox.com/u/2792776/screenshots/2010-04-08_1440.png
Однако оказывается, что это даже не настоящая форма. Вместо этого, когда вы нажимаете «Войти», некоторые javascript собирают значения полей, динамически создают новую форму и отправляют ее.
Кнопка «Войти» HTML:
<button onclick="handleLogin(); return false;" class="btnBlue" id="myTMobile-login"><span>Log in</span></button>
Функция handleLogin()
:
function handleLogin() {
if (ValidateMsisdnPassword()) { // client-side form validation logic
var a = document.createElement("FORM");
a.name = "form1";
a.method = "POST";
a.action = mytmoUrl; // defined elsewhere as https://my.t-mobile.com/Login/LoginController.aspx
var c = document.createElement("INPUT");
c.type = "HIDDEN";
c.value = document.getElementById("myTMobile-phone").value; // the value of the phone number input field
c.name = "txtMSISDN";
a.appendChild(c);
var b = document.createElement("INPUT");
b.type = "HIDDEN";
b.value = document.getElementById("myTMobile-password").value; // the value of the password input field
b.name = "txtPassword";
a.appendChild(b);
document.body.appendChild(a);
a.submit();
return true
} else {
return false
}
}
Я мог бы смоделировать отправку этой формы, поместив данные формы в https://my.t-mobile.com/Login/LoginController.aspx
с помощью Net::HTTP#post_form
, но я не знаю, как получить результирующий файл cookie в Mechanize, чтобы я мог продолжать очищать доступный интерфейс, когда авторизовался.
Есть идеи?