2011-03-27 22 views
1

我试图从Natwest的网上银行服务中使用PHP/cURL提取信息 - 这个想法是,如果它实际上可以做,那么我可以做一个更加移动化的网站,访问该服务的友好站点,或者可能是Android应用。cURL和刮检查框架支持的网站

这些页面显然使用了一些涉及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这样的产品会更好吗?

回答

1

只因为你可以并不意味着你应该。银行业务受到严格监管,通过提供刮刮银行网站的应用程序,您本质上是提供银行服务,并且可能会发现自己与银行一样受到监管 - 更不用说为通过您的应用程序发生的任何违规承担责任。

您也将违反Natwest的服务条款,任何刮擦其(或任何其他银行)网站的应用程序很可能会发现自己很快就被起诉不存在。

也就是说,如果你真的想刮这个网站,你应该看看底部的“辅助功能”链接。屏幕阅读器和屏幕刮屏之间没有太大区别。

+0

嗯,你养好指出我将通过代理提供银行服务的事实,并且可能很快就会被关闭/被起诉。我其实并没有想到... 我不会经历它。如果有解决方案,我仍然对解决方案感兴趣...纯粹是因为你永远不知道将来会出现什么。您提到的“辅助功能”链接基本上告诉人们,该网站与具有辅助功能选项的浏览器/操作系统兼容,并且如果听力困难,他们可以使用电话服务。 – t0mgerman 2011-03-27 04:09:39

+0

哎呀 - 你是对的。我误以为“加载可访问性页面”功能意味着“为屏幕阅读器加载页面”而不是其实际内容 - “加载说'我们支持屏幕阅读器'的页面”。但策略是合理的 - 如果您发现支持移动设备或屏幕阅读器的页面,他们通常对iframe,脚本,嵌入式媒体等的依赖程度要低得多。 – 2011-03-27 04:23:39

0

是的,肯定可以自动执行此操作。但是,当银行决定在未来更新其网站时,您的服务可能会中断。

要找出需要什么数据尝试使用类似TamperDataHttpFox的Firefox扩展来监控您的登录。 然后复制脚本中所有必需的数据和标题。确保设置用户代理和引用标头,因为它们通常是必需的。

0

get_browser - 告诉一下用户的浏览器能够

<?php 
$browser = get_browser(null, true); 
print_r($browser); 
?> 

上例的输出类似于:

Array 
(
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) 
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) 
    [parent] => Firefox 0.9 
    [platform] => WinXP 
    [browser] => Firefox 
    [version] => 0.9 
    [majorver] => 0 
    [minorver] => 9 
    [cssversion] => 2 
    [frames] => 1 
    [iframes] => 1 
    [tables] => 1 
    [cookies] => 1 
    [backgroundsounds] => 
    [vbscript] => 
    [javascript] => 1 
    [javaapplets] => 1 
    [activexcontrols] => 
    [cdf] => 
    [aol] => 
    [beta] => 1 
    [win16] => 
    [crawler] => 
    [stripper] => 
    [wap] => 
    [netclr] => 
) 

refrence:PHP手册