Я пытаюсь получить информацию из службы онлайн-банкинга Natwest с помощью PHP / cURL - идея заключается в том, что, если это действительно возможно, то я мог бы сделать сайт, более удобный для мобильных устройств, для доступа к службе, или, может быть, Android-приложение.
Очевидно, что на страницах используются некоторые функции безопасности, включая Javascript, наборы фреймов и кто знает, что еще. Из того, что я могу сказать, в Javascript не происходит никаких манипуляций с файлами cookie (что я вижу), но что-то происходит с сгенерированными URL-адресами в источнике страницы ... и всякий раз, когда я пытаюсь просмотреть страницу, которая будет частью набора фреймов, cURL просто отображает страницу набора фреймов. Если я выбираю не следовать перенаправлениям при запросе страницы входа в систему, я просто получаю сообщение «объект перемещен» - и ссылку на страницу набора фреймов. Есть идеи, где я иду не так?
<?
$ckfile = tempnam ("/tmp", "COOKIE");
// INITIAL REQUEST TO SITE TO GET COOKIE
$ch = curl_init();
$userAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)"
. "AppleWebKit/534.16 (KHTML, like Gecko) "
. "Chrome/10.0.648.151 Safari/534.16";
curl_setopt($ch,CURLOPT_USERAGENT, $userAgent);
curl_setopt($ch, CURLOPT_URL, 'http://www.nwolb.com');
curl_setopt($ch, CURLOPT_COOKIEJAR, $ckfile);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$data = curl_exec($ch);
// EXTRACTING OTHER POSS REDIRECTS / FRAMESET URLs FROM RESULTING PAGE...
// A Javascript function on the default.aspx page specifies a
// top.window.document redirect, I store this in $newurl in case it's needed
preg_match('/top\.window\.document\.location\.href = \'(?P<url>.*)\';/', $data, $newurl);
// It's the login page I want, the Frameset page does specify a link,
// but (what I assume is) the frame-breaking protection sends me back to
// the frameset page every time...
preg_match('/login.aspx\?(?P<referer>.*)"><\/frame>/', $data, $loginurl);
//Subsequent request, attempting to bring up the login page
curl_setopt($ch, CURLOPT_URL, 'https://www.nwolb.com/login.aspx?' . $loginurl['referer']);
$data = curl_exec($ch);
curl_close($ch);
?>
Стоит ли отказываться от этого эксперимента или, возможно, его можно достичь? Является ли PHP подходящим инструментом для работы? Или может быть лучше попробовать что-то вроде Watir на Ruby?