【问题标题】:How to get page contents after redirect by javascript in php如何在php中通过javascript重定向后获取页面内容
【发布时间】:2012-09-28 03:58:21
【问题描述】:

通过javascript重定向页面后如何获取整个页面内容?

执行webpage.php

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setOpt($ch, CURLOPT_POST, TRUE);
$url = 'http://www.doredirect.com';
$postfields = array('doredirect'=>'true','trigger'=>'1');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);

echo($data);  //In this step, it redirect to page: http://www.finalpage.com

curl_close($ch);

如何获取http://www.finalpage.com的内容?

注意:如果我不回显,它不会返回任何内容,也不会重定向到任何页面

非常感谢!

【问题讨论】:

  • 如何重定向?由于您设置了 CURLOPT_FOLLOWLOCATION ,因此如果使用 Location: http://www.finalpage.com 完成重定向,它应该自动跟随重定向并返回该页面的内容。如果没有发生这种情况,则该页面似乎必须使用其他类型的重定向。
  • 我认为它使用 javascript,我不确定,因为它不是我的页面,而且在重定向之前我没有足够的时间查看它的内容:D!
  • CURL 无法执行 JavaScript,因此无法遵循此重定向。
  • 只需查看 PHP 脚本的输出即可查看其内容。或者从命令行运行 curl。
  • 哦!我得到了它!我在尝试……

标签: php javascript redirect curl


【解决方案1】:

尝试使用它来查看 curl 响应的 HTML:

echo htmlspecialchars($data);

很可能在某处存在 javascript 或元重定向。寻找这个:

window.location...

document.location...

<meta http-equiv="refresh" content="0;url=http://finalpage.com" />

从那里,您可以构建一个正则表达式(正如其他人建议的那样)来查找 URL,然后获取它的内容。

【讨论】:

  • 你的意思是我可以得到最终的 url 但不能得到 finalpage.com 并获取它的数据?
  • 这是正在发生的事情 - 您正在通过 CURL 加载一些数据 (html)。然后,您将该数据回显到浏览器。然后,该数据中的某些内容会告诉浏览器重定向到 finalpage.com。这可能发生在 1) Javascript 重定向、2) META 重定向或 3) HEADER 重定向。您必须找到罪魁祸首,然后解析 CURL 响应以获取 URL,然后执行另一个请求以获取 finalpage.com 的内容。有意义吗?
  • 好的!我发现它使用javascript。我真的很想让它变得简单,但这真的让我抓狂:D!标头来自 www.doredirect.com 的动态。
  • finalpage.com 阻止 curl 直接发帖!我现在能做什么?请帮帮我:D!
  • 我不太确定你想要完成什么。有些网站有针对黑客的故障保险......例如不尊重看起来不正确的请求(例如您的案例)。例如,曾经尝试在 iframe 中加载 Google 吗?真的不行。同样可能适用于此... finalpage.com 说“这不是浏览器请求...去他妈的自己”... aka 404 或空 200 响应 ;)
【解决方案2】:

浏览返回的 html 并找出重定向在代码中的位置。将数据放入变量中,使用正则表达式对其进行处理,获取重定向到的 url,并使用新的 curl 请求获取新的页面内容。

【讨论】:

    【解决方案3】:

    我发现了如何做到这一点!

    我检测到 http://www.finalpage.com 在显示内容出来之前重新提交了它。所以我用这个http://www.mishainthecloud.com/2009/12/screen-scraping-aspnet-application-in.html 来卷曲它,我得到了我想要的任何东西。谢谢大家!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 2012-06-04
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多