cURL和抓取寻求检测帧支持的网站
我正在尝试使用PHP / cURL从Natwest的网上银行服务中获取信息 - 这个想法是,如果它实际上可以做到,那么我可能会建立一个更适合移动设备的网站来访问该服务,或者可能是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是适合这项工作的合适工具吗?或者尝试像Ruby上的Watir一样更好吗?
没有找到相关结果
已邀请:
3 个回复
功飘
味芯憨
秃拳割
上面的例子将输出类似于:
参考:php手册