【问题标题】:Does PHP's HTTP class support javascript?PHP 的 HTTP 类是否支持 javascript?
【发布时间】:2010-07-12 19:10:31
【问题描述】:

关于Can a PHP Proxy call Javascript functions like a click,我正在研究一种解决方案,该解决方案涉及使用 PHP 的 HTTP 类来模拟客户端的浏览器。

有谁知道PHP HTTP 类是否支持javascript 函数?你能推荐其他的吗?

谢谢!

【问题讨论】:

    标签: php http


    【解决方案1】:

    ,它没有。您必须自己实施。如果你想拥有它所有的服务器端,请查看 phpjs、j4p5 或更好的 spidermonkey pecl 扩展。 http://pecl.php.net/package/spidermonkey

    更好的选择可能是通过 XPI 插件/XPCOM 桥自己编写一个真正的浏览器脚本。曾经有一个扩展名为“JSSh”,还有一个“SD 连接器”,http://www.activestate.com/blog/2008/05/jssh-replacement-sd-connector

    这些选项都不简单。这就是为什么没有人这样做,以及为什么这些奢侈的功能特别不在 HTTP 类中。

    【讨论】:

    • 感谢您的信息。我喜欢在 PHP 中嵌入 spidermonkey 的想法,并且肯定会进一步研究。但是,我想确保我正确地提出了我的问题:您是说如果通过 php 的 HTTP 类请求的页面具有一个 javascript 函数,该函数会触发嵌套在响应页面中的“onClick”,以响应某些 GET 调用或其他什么,那么我仍然需要在 PHP 方法中使用 spidermonkey 吗?所有这些都必须在服务器端进行,因为代理无法向客户端显示页面。
    • 是的,你需要实例化 Spidermonkey 并设置一个浏览器环境(我不相信它会内置一个即用的文档树)。然后解析(!) JS 钩子的代理 html 页面,并伪造 onClick 或 onMouseOver 或 onWhatever 事件。我相信,这在一般情况下是无法管理的。我从未听说过代理会进行如此精细的模拟。在 PHP 中尝试它似乎没有希望。如果您根据具体情况重新实现请求流,您最多可以模拟 非常具体 页面的 onClick 行为。
    • 谢谢马里奥。它实际上只是我需要这种行为的一页,所以这是一个人为的例子。我试图克服的问题是 IIS 服务器用来验证我的请求的 viewstate 变量。不幸的是,当我直接发布值时,我得到了一个损坏的视图状态,所以我认为使用 javascript 回调函数登录将是唯一的方法。非常感谢您的帮助。
    • 我自己写了一些网站爬虫,你应该看看 Firebug/Dragonfly。也许你错过了什么。有时必须准确地复制浏览器指纹(Keep-Alive、Accept-Encoding 等)。如果它真的是触发自动化的 AJAX 调用,则必须模拟 X-Requested-With: XMLHttpRequest。 Javascript 代码不会欺骗其他任何东西。
    • 马里奥 - 你是对的。我没有完全按照发送的方式重建标题。正如你提到的,我必须添加 Keep-Alive、Accept-Encoding 等......)它突然起作用了!再次感谢!
    【解决方案2】:

    Http 流处理程序与浏览器没有任何关系。它不会生成 DOM 树、阻止广告或执行 javascript - 它只是一个处理 http protocol 的库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-31
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 2019-01-22
      • 2013-11-24
      相关资源
      最近更新 更多