Php 如何确定该页面是否为登录页面?
我正在编写一个PHP脚本,它使用cURL搜索和读取html内容 我想从内容和/或响应标题确定目标页面是否需要登录才能访问 我理解,通常情况下,在匿名请求页面时,服务器会在需要时重定向到登录页面。如果我错了,请纠正我 我四处阅读并得到了一些想法:Php 如何确定该页面是否为登录页面?,php,curl,Php,Curl,我正在编写一个PHP脚本,它使用cURL搜索和读取html内容 我想从内容和/或响应标题确定目标页面是否需要登录才能访问 我理解,通常情况下,在匿名请求页面时,服务器会在需要时重定向到登录页面。如果我错了,请纠正我 我四处阅读并得到了一些想法: 搜索refreshmeta标记,或者当http返回代码为302时,检查它是否引用具有&action=login(或类似)的URI 在有效页面的正文中搜索登录表单。(我知道同一页面上可能有内容和登录表单) 这些方法有效吗?这些方法的准确度如何?我可以使用哪
refresh
meta标记,或者当http返回代码为302时,检查它是否引用具有&action=login
(或类似)的URIcurl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 5);
提前感谢您在重定向目标页面上查找带有
的表单。我认为您的答案会因您尝试访问的站点而异。也就是说,您将不得不根据特定数据执行一些preg_match语句来确定这一点。http代码并不是一个页面是否用于登录的具体证据(例如,任何页面都可以是302)。此外,现在许多站点在许多公共页面上都有登录表单。这些页面不一定是“主登录页面”。@PiZzL3-是的,我确实认识到这些问题。我想没有简单的方法来确认内容和登录表单何时在同一页面上。不管怎样,当你提到“特定数据”时,你到底指的是什么?我的意思是每一个wesite都是独一无二的。因此,要确定您是否在真正的登录页面上,您必须了解每个站点的详细信息。你不能只做一个过滤器,就指望它能处理所有的事情。你必须确切地知道每个站点的登录页面应该是什么样子,并以此为基础构建。我理解这一点。这个问题的重点是找出是否有方法可以轻松地覆盖尽可能多的站点,而正如你所说,没有。遗憾的是,我的项目不是特定于站点的,我没有时间为每个站点做一个筛选。哦,好吧,我的运气不好。这将捕获大多数重新定向的登录页面,但可能有一些页面被重新定向并作为站点的一部分登录,但仍然有一些好的内容。例如,有一个成员登录的站点,但是有很多公共内容是建立在一些CMS上的,这些CMS有一些URL重新定向以获得漂亮的URL名称。一些登录也是在点击链接后通过javascript发布的。@PiZzL3-是的,但他们仍然有一个正式的链接,我知道你在说什么,但是它们不应该出现在重定向到您登录的页面上。@Theralsix-如果js在页面加载后呈现表单,您将看不到表单。用PHP cURL拖动页面只会得到原始html+js/etc。。。没有一个能显示出来。从技术上讲,你可以在一个100%js呈现的站点上运行。所以如果你用cURL把它拉下来,你得到的只是js,你不知道你在哪个页面上,或者你不知道你将在上面呈现什么。