Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何确定该页面是否为登录页面?_Php_Curl - Fatal编程技术网

Php 如何确定该页面是否为登录页面?

Php 如何确定该页面是否为登录页面?,php,curl,Php,Curl,我正在编写一个PHP脚本,它使用cURL搜索和读取html内容 我想从内容和/或响应标题确定目标页面是否需要登录才能访问 我理解,通常情况下,在匿名请求页面时,服务器会在需要时重定向到登录页面。如果我错了,请纠正我 我四处阅读并得到了一些想法: 搜索refreshmeta标记,或者当http返回代码为302时,检查它是否引用具有&action=login(或类似)的URI 在有效页面的正文中搜索登录表单。(我知道同一页面上可能有内容和登录表单) 这些方法有效吗?这些方法的准确度如何?我可以使用哪

我正在编写一个PHP脚本,它使用cURL搜索和读取html内容

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

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

我四处阅读并得到了一些想法:

  • 搜索
    refresh
    meta标记,或者当http返回代码为302时,检查它是否引用具有
    &action=login
    (或类似)的URI
  • 在有效页面的正文中搜索登录表单。(我知道同一页面上可能有内容和登录表单)
  • 这些方法有效吗?这些方法的准确度如何?我可以使用哪些其他技术/标志来识别/建议登录页面?或者这是一项不可能完成的任务,目标是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);
    

    提前感谢您

    在重定向目标页面上查找带有
    的表单。我认为您的答案会因您尝试访问的站点而异。也就是说,您将不得不根据特定数据执行一些preg_match语句来确定这一点。http代码并不是一个页面是否用于登录的具体证据(例如,任何页面都可以是302)。此外,现在许多站点在许多公共页面上都有登录表单。这些页面不一定是“主登录页面”。@PiZzL3-是的,我确实认识到这些问题。我想没有简单的方法来确认内容和登录表单何时在同一页面上。不管怎样,当你提到“特定数据”时,你到底指的是什么?我的意思是每一个wesite都是独一无二的。因此,要确定您是否在真正的登录页面上,您必须了解每个站点的详细信息。你不能只做一个过滤器,就指望它能处理所有的事情。你必须确切地知道每个站点的登录页面应该是什么样子,并以此为基础构建。我理解这一点。这个问题的重点是找出是否有方法可以轻松地覆盖尽可能多的站点,而正如你所说,没有。遗憾的是,我的项目不是特定于站点的,我没有时间为每个站点做一个筛选。哦,好吧,我的运气不好。这将捕获大多数重新定向的登录页面,但可能有一些页面被重新定向并作为站点的一部分登录,但仍然有一些好的内容。例如,有一个成员登录的站点,但是有很多公共内容是建立在一些CMS上的,这些CMS有一些URL重新定向以获得漂亮的URL名称。一些登录也是在点击链接后通过javascript发布的。@PiZzL3-是的,但他们仍然有一个正式的链接,我知道你在说什么,但是它们不应该出现在重定向到您登录的页面上。@Theralsix-如果js在页面加载后呈现表单,您将看不到表单。用PHP cURL拖动页面只会得到原始html+js/etc。。。没有一个能显示出来。从技术上讲,你可以在一个100%js呈现的站点上运行。所以如果你用cURL把它拉下来,你得到的只是js,你不知道你在哪个页面上,或者你不知道你将在上面呈现什么。