【问题标题】:PHP read from a webpage that requires authenticationPHP 从需要身份验证的网页读取
【发布时间】:2011-05-11 22:26:57
【问题描述】:

我正在尝试获取需要使用 PHP 进行身份验证的网页内容。
理想情况下,我想使用简单的 html dom 解析器:http://simplehtmldom.sourceforge.net
有人知道这样做的方法吗?

编辑:
尝试了以下代码:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'username=' . urlencode($username) . '&password=' . urlencode($pass));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
echo curl_exec($ch);
curl_close($ch);

但现在我收到 405 HTTP 错误。

【问题讨论】:

  • 什么样的认证?简单的 HTTP 身份验证还是实际的会话存储数据?
  • 是的,我说的不是简单的 HTTP 身份验证,我说的是常规登录表单。

标签: php


【解决方案1】:

我从未使用过该解析器,但他们的示例代码使它看起来可以从文件或 URL 加载数据。我会使用 php 的 curl 函数,它可以让您轻松访问具有多种身份验证类型的页面,将结果保存到文件中,然后使用库来解析文件。

http://www.php.net/manual/en/book.curl.php

具体查看CURLOPT_HTTPAUTH 选项。

希望这会有所帮助。

编辑:

我不得不查找 405;我从来没有见过一个。听起来您的 ISP 不允许 POST 请求,或者在没有 SSL 的情况下可能不允许它们:

http://www.checkupdown.com/status/E405.html

我会与运行您的服务器的人讨论 405。您的代码对我来说看起来不错。发布登录表单会返回您想要的页面,还是在保存会话信息后必须拉下另一个页面?

【讨论】:

  • 您能进一步解释一下吗?尝试了 CURLOPT_HTTPAUTH 但无法使其正常工作。顺便说一句,为了明确起见,我不是在谈论 htaccess 身份验证,而是表单身份验证,例如 gmail 或 facebook 或其他。
  • 啊。大多数进行 Facebook 或 Gmail 身份验证的人都会使用 Oauth。这仍然是可能的;我在这里找到了一个示例链接:(youtube,不是 facebook,但 oauth 是 ouath)stackoverflow.com/questions/1522869/…。我建议您查看您感兴趣的网站的 API 并更改详细信息。
  • 看起来谷歌仍然允许基本身份验证,实际上,checkout.google.com/support/sell/bin/…
  • Google 和 facebook 只是示例。无法在我尝试从中提取信息的网站上使用 Oauth。
猜你喜欢
  • 2015-04-09
  • 2017-01-02
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 2011-04-03
  • 1970-01-01
相关资源
最近更新 更多