PHP读取受保护页面的HTML源[重复]
Posted
技术标签:
【中文标题】PHP读取受保护页面的HTML源[重复]【英文标题】:PHP read HTML source of a protected page [duplicate] 【发布时间】:2012-11-08 00:38:37 【问题描述】:可能重复:Making a HTTP GET request with HTTP-Basic authentication
我想获取受密码保护的页面的 html 源代码。我通常使用此代码来获取未受保护页面的 html 源代码。
$handle = @fopen("http://www.webmasterworld.com", "rt");
$source_code = fread($handle,9000);
如何使用用户名和密码获取受密码保护的页面的来源?它不受基本身份验证的保护。
【问题讨论】:
什么样的密码保护? .htpasswd? 没有。受asp保护。检查我对第一个答案的评论 【参考方案1】:由于这不是 BASIC AUTH(例如,在 apache 中通过 .htaccess 保护),而是似乎基于会话/cookie,因此您需要首先提交用户名/密码,就像普通浏览器通过POST 请求。成功后,Web 应用程序将向您返回一个 cookie 名称/值对,您需要将其用于下一个请求(即请求您要阅读的页面)。
您可以使用服务器希望您设置的所有 cookie 键/值对,也可以找出重要的会话 cookie 是什么。这取决于 Web 应用程序的工作方式。要弄清楚会话 cookie 名称应该是什么以及通常的值是什么样的,请尝试通过诸如 firebug 或 chrome 的开发工具之类的工具查看 HTTP 请求。一旦你弄清楚了重要的 cookie 名称/值是什么,请确保在下一个请求中尝试读取页面时发送它。
在 php 中完成所有这些操作的最简单方法是使用 cURL。粗略的想法有两部分:
1) 将用户名/密码发送到表单的 action="" 处理器并返回 cookie 值对。请参阅curl_init()
、curl_setopt()
和 curl_exec()
了解如何初始化请求,设置其选项(例如,将其类型设置为 POST,设置浏览器代理字符串以防处理脚本仅响应真实浏览器,设置请求作为仅标头请求等)然后执行。
有关如何执行此操作和获取 cookie 值的更多详细信息,请访问 similar post here。
2) 获得会话 cookie 键/值对后,通过提供 cookie/值对来读取页面,以便网站知道您之前已通过身份验证。在设置第二个请求并提供 cookie=value 对时,您需要将 CURLOPT_COOKIE
选项与 curl_setopt()
一起使用。有关如何通过 cURL 发送 cookie 的更多详细信息,请参见 related post here。
【讨论】:
【参考方案2】:尝试对用户名和密码进行 url 编码并将它们添加到 URL。
$encUser = urlencode($username);
$encPass = urlencode($password);
$handle = @fopen("http://$encUser:$encPass@www.webmasterworld.com", "rt");
几乎所有将通过 HTTP 为您获取文档的库都了解 URL 中的基本凭据。
【讨论】:
去掉命令中的“@”,告诉我们你遇到了什么错误。 我正在使用这个代码 它显示警告:fread() 期望参数 1 是资源,布尔值在第 5 行的 C:\wamp\www\read\index.php 中给出 您忘记了凭据和 URL 主机名之间的“@”。 我试过了,但你告诉我把它拿下来。当我使用@时,它说无法登录 我的意思是从@fopen
中删除@。当您使用正确的 URL(带有 @ 符号)时,您会遇到什么错误?【参考方案3】:
什么样的保护?如果是 BASIC AUTH,请改用 curl。如果它落后于会话会变得更加复杂。
【讨论】:
不明白你的意思,但我想阅读此页面jzdw.jy100.com/main.aspx 要登录此页面,我需要将用户名和密码输入jzdw.jy100.com 这有点难。您必须使用 CURL 模拟登录,登录后获取会话 id cookie,在下载页面时传递它。可能有图书馆可以做到这一点,所以做一些搜索。但是,如果您与网站所有者进行了沟通,最好先与他们讨论以不同的方式提供信息,因为上述方式并不是传输信息的最优雅方式。看看这个***.com/questions/3008817/…以上是关于PHP读取受保护页面的HTML源[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何从受保护的文件夹中使用PHP和AJAX提供安全的文件下载?