【问题标题】:How to get past 'noframes' page returned by CURL request?如何通过 CURL 请求返​​回的“noframes”页面?
【发布时间】:2011-06-29 03:21:59
【问题描述】:

我已经设置了一个 curl 请求,该请求在许多站点上都能正常工作,其中大多数站点使用框架,并且如果使用的浏览器 bing 不支持框架,则返回带有相关消息的 noframes 标记,全部返回整个页面我使用 Domdocument 遍历的框架集。

但是,一个网站只会返回说明“您需要支持框架的浏览器”的页面。我正在传递 CURLOPT_USERAGENT, Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13,我尝试了许多用户代理定义并继续阅读尝试了各种其他 curl 选项,但没有成功。

我可以看到的网站之间的唯一区别是,它声明了 doctype: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 框架集//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"

而工作正确的网站将 doctype 声明为: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 过渡//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

有问题的网址是:http://www.sainsburys.co.uk/groceries/index.jsp

我当然可以通过使用直接 url 指向框架集中的链接来访问我想要的框架集,但我宁愿从索引文件入口点开始,而不是硬编码指向我随时间变化的页面的链接。

任何有效的建议或 curl 脚本,将不胜感激。

顺便说一句:所收集信息的使用在可接受的使用政策范围内。

【问题讨论】:

  • 您应该比较 Fiddler 中的请求。

标签: php curl


【解决方案1】:

我得到了带有框架但有两个请求的完整页面:
第一个: 请求 index.jsp 从 javascript 代码中获取会话数据。
第二个: 再次请求 index.jsp,但这次将会话数据传递给它。
这是我以前这样做的代码:

”;
    print_r(htmlspecialchars(getSainsburysIndex($sessData)));
    回声“
”; }别的{ echo "无法获取会话 ID。"; } ?>

【讨论】:

    猜你喜欢
    • 2019-02-08
    • 2011-11-16
    • 1970-01-01
    • 2015-04-27
    • 2012-05-03
    • 2017-02-28
    • 1970-01-01
    • 2017-04-16
    • 2015-04-27
    相关资源
    最近更新 更多