2011-03-29 53 views
0

我正在写一个PHP脚本,搜索和使用卷曲读取HTML内容。如何确定页面是否为登录页面?

我想从内容和/或响应头,以确定目标页面是否需要登录后才能访问。

我明白,通常情况下,当匿名请求页面时,服务器会在需要重定向到登录页面。如我错了请纠正我。

我看了四周,有几个想法:

  1. 搜索refresh元标记或当HTTP返回代码是302,然后检查是否指的是URI与&action=login(或类似)
  2. 在有效页面的正文中搜索登录表单。 (我认识到在同一页上可能有内容和登录表单)

这些方法是否有效以及这些方法有多精确?我可以使用哪些其他技术/标志来识别/建议登录页面?或者,这是一个不可能完成的目标,准确率达到60-70%?

注意:我没有试图刮,只是发现它是否是一个登录页面。

以下是相关选项,仅作参考。

curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 5); 

预先感谢您

+0

我认为你的回答,视乎你要访问的站点。也就是说,你将不得不做一些preg_match语句来根据特定的数据来确定它。 http代码并不是登录页面是否有效的具体证据(例如任何页面都可以为302)。 – PiZzL3 2011-03-29 01:49:01

+0

另外,现在很多网站在很多很多公开页面上都有登录表单。那么多页面并不一定是“主要的登录页面”。 – PiZzL3 2011-03-29 01:50:47

+0

@ PiZzL3 - 是的,我承认这些问题。我想有没有简单的方法来确认内容和登录表单在同一页面上。无论如何,当你提到“具体数据”时,你究竟指什么? – JQonfused 2011-03-29 03:35:03

回答

2

查找重定向目标页面上的表单与<input type='password'

+0

这将赶上最登录页面重新定向,但也有可能是得到重新定向,并有一个登录的网站的部分页面,但还是有一些不错的内容。例如,站点上有成员登录,但有大量公共内容构建在某个CMS上,该CMS有一些URL重定向为具有相当的URL名称。 – Rasika 2011-03-29 01:53:31

+0

点击链接后,也会通过JavaScript呈现一些登录信息。 – PiZzL3 2011-03-29 01:58:45

+0

@ PiZzL3 - 是的,但他们仍然有一个表格 – therealsix 2011-03-29 02:01:14